Crypto: Add optimized Camellia assembly implementation for x86_64 based on work by Jussi Kivilinna (https://github.com/jkivilin/supercop-blockciphers). This improve speed by a factor of 2.5 when AES-NI supported by CPU and by 30% if AES-NI not supported.

This commit is contained in:
Mounir IDRASSI committed 2017-06-21 01:39:55 +02:00
1 parent ee5c1784ea
commit 70097ecfe5
18 files changed
+2476 -14

No files matched your search

+7
View File
@@ -251,6 +251,9 @@ void EncipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
else if (cipher == TWOFISH) {
twofish_encrypt_blocks(ks, data, data, (uint32) blockCount);
}
else if (cipher == CAMELLIA) {
camellia_encrypt_blocks(ks, data, data, (uint32) blockCount);
}
#endif
else if (cipher == GOST89) {
gost_encrypt(data, data, ks, (int)blockCount);
@@ -351,6 +354,9 @@ void DecipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
else if (cipher == TWOFISH) {
twofish_decrypt_blocks(ks, data, data, (uint32) blockCount);
}
else if (cipher == CAMELLIA) {
camellia_decrypt_blocks(ks, data, data, (uint32) blockCount);
}
#endif
else if (cipher == GOST89) {
gost_decrypt(data, data, ks, (int)blockCount);
@@ -430,6 +436,7 @@ BOOL CipherSupportsIntraDataUnitParallelization (int cipher)
#endif
#if CRYPTOPP_BOOL_X64
|| (cipher == TWOFISH)
|| (cipher == CAMELLIA)
#endif
;
}
+1150 -7
View File
File diff suppressed because it is too large. Load diff
+6
View File
@@ -2,6 +2,7 @@
#define HEADER_Crypto_Camellia
#include "Common/Tcdefs.h"
#include "config.h"
#ifdef __cplusplus
extern "C"
@@ -16,6 +17,11 @@ void camellia_set_key(const unsigned __int8 userKey[], unsigned __int8 *ks);
void camellia_encrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
void camellia_decrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
#if CRYPTOPP_BOOL_X64
void camellia_encrypt_blocks(unsigned __int8 *ks, const byte* in_blk, byte* out_blk, uint32 blockCount);
void camellia_decrypt_blocks(unsigned __int8 *ks, const byte* in_blk, byte* out_blk, uint32 blockCount);
#endif
#ifdef __cplusplus
}
#endif
+841
View File
@@ -0,0 +1,841 @@
/* camellia_aesni.S ver 1.2
*
* Copyright © 2012-2013 Jussi Kivilinna <jussi.kivilinna@iki.fi>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/* Adapted to VeraCrypt
- original file pre-processed using "gcc -E"
- added instructions at begining of each functiont to adapt to Windows parameters passing convention
- Fix "'ADDR32' relocation" error when building Windows driver by explicitely using %rip addressing when
accessing various locally defined data variables. This has no performance impact.
*/
.data
.align 16
.Lshufb_16x16b:
.byte 0 + (0), 4 + (0), 8 + (0), 12 + (0), 0 + (1), 4 + (1), 8 + (1), 12 + (1), 0 + (2), 4 + (2), 8 + (2), 12 + (2), 0 + (3), 4 + (3), 8 + (3), 12 + (3);
.Lpack_bswap:
.long 0x00010203
.long 0x04050607
.long 0x80808080
.long 0x80808080
.Lbswap128_mask:
.byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
.Lpre_tf_lo_s1:
.byte 0x45, 0xe8, 0x40, 0xed, 0x2e, 0x83, 0x2b, 0x86
.byte 0x4b, 0xe6, 0x4e, 0xe3, 0x20, 0x8d, 0x25, 0x88
.Lpre_tf_hi_s1:
.byte 0x00, 0x51, 0xf1, 0xa0, 0x8a, 0xdb, 0x7b, 0x2a
.byte 0x09, 0x58, 0xf8, 0xa9, 0x83, 0xd2, 0x72, 0x23
.Lpre_tf_lo_s4:
.byte 0x45, 0x40, 0x2e, 0x2b, 0x4b, 0x4e, 0x20, 0x25
.byte 0x14, 0x11, 0x7f, 0x7a, 0x1a, 0x1f, 0x71, 0x74
.Lpre_tf_hi_s4:
.byte 0x00, 0xf1, 0x8a, 0x7b, 0x09, 0xf8, 0x83, 0x72
.byte 0xad, 0x5c, 0x27, 0xd6, 0xa4, 0x55, 0x2e, 0xdf
.Lpost_tf_lo_s1:
.byte 0x3c, 0xcc, 0xcf, 0x3f, 0x32, 0xc2, 0xc1, 0x31
.byte 0xdc, 0x2c, 0x2f, 0xdf, 0xd2, 0x22, 0x21, 0xd1
.Lpost_tf_hi_s1:
.byte 0x00, 0xf9, 0x86, 0x7f, 0xd7, 0x2e, 0x51, 0xa8
.byte 0xa4, 0x5d, 0x22, 0xdb, 0x73, 0x8a, 0xf5, 0x0c
.Lpost_tf_lo_s2:
.byte 0x78, 0x99, 0x9f, 0x7e, 0x64, 0x85, 0x83, 0x62
.byte 0xb9, 0x58, 0x5e, 0xbf, 0xa5, 0x44, 0x42, 0xa3
.Lpost_tf_hi_s2:
.byte 0x00, 0xf3, 0x0d, 0xfe, 0xaf, 0x5c, 0xa2, 0x51
.byte 0x49, 0xba, 0x44, 0xb7, 0xe6, 0x15, 0xeb, 0x18
.Lpost_tf_lo_s3:
.byte 0x1e, 0x66, 0xe7, 0x9f, 0x19, 0x61, 0xe0, 0x98
.byte 0x6e, 0x16, 0x97, 0xef, 0x69, 0x11, 0x90, 0xe8
.Lpost_tf_hi_s3:
.byte 0x00, 0xfc, 0x43, 0xbf, 0xeb, 0x17, 0xa8, 0x54
.byte 0x52, 0xae, 0x11, 0xed, 0xb9, 0x45, 0xfa, 0x06
.Linv_shift_row:
.byte 0x00, 0x0d, 0x0a, 0x07, 0x04, 0x01, 0x0e, 0x0b
.byte 0x08, 0x05, 0x02, 0x0f, 0x0c, 0x09, 0x06, 0x03
.align 4
.L0f0f0f0f:
.long 0x0f0f0f0f
.text
.align 8
__camellia_enc_blk16:
leaq 8 * 16(%rax), %rcx;
vmovdqu %xmm11, (%rax); vmovdqu %xmm15, (%rcx); vpunpckhdq %xmm4, %xmm0, %xmm15; vpunpckldq %xmm4, %xmm0, %xmm0; vpunpckldq %xmm12, %xmm8, %xmm11; vpunpckhdq %xmm12, %xmm8, %xmm8; vpunpckhqdq %xmm11, %xmm0, %xmm4; vpunpcklqdq %xmm11, %xmm0, %xmm0; vpunpckhqdq %xmm8, %xmm15, %xmm12; vpunpcklqdq %xmm8, %xmm15, %xmm8;; vpunpckhdq %xmm5, %xmm1, %xmm15; vpunpckldq %xmm5, %xmm1, %xmm1; vpunpckldq %xmm13, %xmm9, %xmm11; vpunpckhdq %xmm13, %xmm9, %xmm9; vpunpckhqdq %xmm11, %xmm1, %xmm5; vpunpcklqdq %xmm11, %xmm1, %xmm1; vpunpckhqdq %xmm9, %xmm15, %xmm13; vpunpcklqdq %xmm9, %xmm15, %xmm9;; vmovdqu (%rax), %xmm11; vmovdqu (%rcx), %xmm15; vmovdqu %xmm0, (%rax); vmovdqu %xmm4, (%rcx); vpunpckhdq %xmm6, %xmm2, %xmm4; vpunpckldq %xmm6, %xmm2, %xmm2; vpunpckldq %xmm14, %xmm10, %xmm0; vpunpckhdq %xmm14, %xmm10, %xmm10; vpunpckhqdq %xmm0, %xmm2, %xmm6; vpunpcklqdq %xmm0, %xmm2, %xmm2; vpunpckhqdq %xmm10, %xmm4, %xmm14; vpunpcklqdq %xmm10, %xmm4, %xmm10;; vpunpckhdq %xmm7, %xmm3, %xmm4; vpunpckldq %xmm7, %xmm3, %xmm3; vpunpckldq %xmm15, %xmm11, %xmm0; vpunpckhdq %xmm15, %xmm11, %xmm11; vpunpckhqdq %xmm0, %xmm3, %xmm7; vpunpcklqdq %xmm0, %xmm3, %xmm3; vpunpckhqdq %xmm11, %xmm4, %xmm15; vpunpcklqdq %xmm11, %xmm4, %xmm11;; vmovdqu .Lshufb_16x16b(%rip), %xmm0; vmovdqu (%rcx), %xmm4; vpshufb %xmm0, %xmm8, %xmm8; vpshufb %xmm0, %xmm12, %xmm12; vpshufb %xmm0, %xmm1, %xmm1; vpshufb %xmm0, %xmm5, %xmm5; vpshufb %xmm0, %xmm9, %xmm9; vpshufb %xmm0, %xmm13, %xmm13; vpshufb %xmm0, %xmm4, %xmm4; vpshufb %xmm0, %xmm2, %xmm2; vpshufb %xmm0, %xmm6, %xmm6; vpshufb %xmm0, %xmm10, %xmm10; vpshufb %xmm0, %xmm14, %xmm14; vpshufb %xmm0, %xmm3, %xmm3; vpshufb %xmm0, %xmm7, %xmm7; vpshufb %xmm0, %xmm11, %xmm11; vpshufb %xmm0, %xmm15, %xmm15; vmovdqu %xmm15, (%rcx); vmovdqu (%rax), %xmm15; vpshufb %xmm0, %xmm15, %xmm0; vmovdqu %xmm11, (%rax); vpunpckhdq %xmm1, %xmm0, %xmm15; vpunpckldq %xmm1, %xmm0, %xmm0; vpunpckldq %xmm3, %xmm2, %xmm11; vpunpckhdq %xmm3, %xmm2, %xmm2; vpunpckhqdq %xmm11, %xmm0, %xmm1; vpunpcklqdq %xmm11, %xmm0, %xmm0; vpunpckhqdq %xmm2, %xmm15, %xmm3; vpunpcklqdq %xmm2, %xmm15, %xmm2;; vpunpckhdq %xmm5, %xmm4, %xmm15; vpunpckldq %xmm5, %xmm4, %xmm4; vpunpckldq %xmm7, %xmm6, %xmm11; vpunpckhdq %xmm7, %xmm6, %xmm6; vpunpckhqdq %xmm11, %xmm4, %xmm5; vpunpcklqdq %xmm11, %xmm4, %xmm4; vpunpckhqdq %xmm6, %xmm15, %xmm7; vpunpcklqdq %xmm6, %xmm15, %xmm6;; vmovdqu (%rax), %xmm11; vmovdqu (%rcx), %xmm15; vmovdqu %xmm1, (%rax); vmovdqu %xmm5, (%rcx); vpunpckhdq %xmm9, %xmm8, %xmm5; vpunpckldq %xmm9, %xmm8, %xmm8; vpunpckldq %xmm11, %xmm10, %xmm1; vpunpckhdq %xmm11, %xmm10, %xmm10; vpunpckhqdq %xmm1, %xmm8, %xmm9; vpunpcklqdq %xmm1, %xmm8, %xmm8; vpunpckhqdq %xmm10, %xmm5, %xmm11; vpunpcklqdq %xmm10, %xmm5, %xmm10;; vpunpckhdq %xmm13, %xmm12, %xmm5; vpunpckldq %xmm13, %xmm12, %xmm12; vpunpckldq %xmm15, %xmm14, %xmm1; vpunpckhdq %xmm15, %xmm14, %xmm14; vpunpckhqdq %xmm1, %xmm12, %xmm13; vpunpcklqdq %xmm1, %xmm12, %xmm12; vpunpckhqdq %xmm14, %xmm5, %xmm15; vpunpcklqdq %xmm14, %xmm5, %xmm14;; vmovdqu (%rax), %xmm1; vmovdqu (%rcx), %xmm5;; vmovdqu %xmm0, 0 * 16(%rax); vmovdqu %xmm1, 1 * 16(%rax); vmovdqu %xmm2, 2 * 16(%rax); vmovdqu %xmm3, 3 * 16(%rax); vmovdqu %xmm4, 4 * 16(%rax); vmovdqu %xmm5, 5 * 16(%rax); vmovdqu %xmm6, 6 * 16(%rax); vmovdqu %xmm7, 7 * 16(%rax); vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovdqu %xmm12, 4 * 16(%rcx); vmovdqu %xmm13, 5 * 16(%rcx); vmovdqu %xmm14, 6 * 16(%rcx); vmovdqu %xmm15, 7 * 16(%rcx);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((0) + 2) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16(% Line truncated
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (8) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (8) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (8) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (8) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((8) + 2) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16(% Line truncated
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (16) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (16) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (16) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (16) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((16) + 2) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16( Line truncated
movl $24, %r8d;
cmpl $16, 272(%rdi);
jne .Lenc_max32;
.Lenc_done:
vmovdqu 0 * 16(%rcx), %xmm8;
vmovdqu 1 * 16(%rcx), %xmm9;
vmovdqu 2 * 16(%rcx), %xmm10;
vmovdqu 3 * 16(%rcx), %xmm11;
vmovdqu 4 * 16(%rcx), %xmm12;
vmovdqu 5 * 16(%rcx), %xmm13;
vmovdqu 6 * 16(%rcx), %xmm14;
vmovdqu 7 * 16(%rcx), %xmm15;
vmovdqu %xmm6, (%rax); vmovdqu %xmm7, 1 * 16(%rax); vpunpckhdq %xmm9, %xmm8, %xmm7; vpunpckldq %xmm9, %xmm8, %xmm8; vpunpckldq %xmm11, %xmm10, %xmm6; vpunpckhdq %xmm11, %xmm10, %xmm10; vpunpckhqdq %xmm6, %xmm8, %xmm9; vpunpcklqdq %xmm6, %xmm8, %xmm8; vpunpckhqdq %xmm10, %xmm7, %xmm11; vpunpcklqdq %xmm10, %xmm7, %xmm10;; vpunpckhdq %xmm13, %xmm12, %xmm7; vpunpckldq %xmm13, %xmm12, %xmm12; vpunpckldq %xmm15, %xmm14, %xmm6; vpunpckhdq %xmm15, %xmm14, %xmm14; vpunpckhqdq %xmm6, %xmm12, %xmm13; vpunpcklqdq %xmm6, %xmm12, %xmm12; vpunpckhqdq %xmm14, %xmm7, %xmm15; vpunpcklqdq %xmm14, %xmm7, %xmm14;; vmovdqu (%rax), %xmm6; vmovdqu 1 * 16(%rax), %xmm7; vmovdqu %xmm8, (%rax); vmovdqu %xmm9, 1 * 16(%rax); vpunpckhdq %xmm1, %xmm0, %xmm9; vpunpckldq %xmm1, %xmm0, %xmm0; vpunpckldq %xmm3, %xmm2, %xmm8; vpunpckhdq %xmm3, %xmm2, %xmm2; vpunpckhqdq %xmm8, %xmm0, %xmm1; vpunpcklqdq %xmm8, %xmm0, %xmm0; vpunpckhqdq %xmm2, %xmm9, %xmm3; vpunpcklqdq %xmm2, %xmm9, %xmm2;; vpunpckhdq %xmm5, %xmm4, %xmm9; vpunpckldq %xmm5, %xmm4, %xmm4; vpunpckldq %xmm7, %xmm6, %xmm8; vpunpckhdq %xmm7, %xmm6, %xmm6; vpunpckhqdq %xmm8, %xmm4, %xmm5; vpunpcklqdq %xmm8, %xmm4, %xmm4; vpunpckhqdq %xmm6, %xmm9, %xmm7; vpunpcklqdq %xmm6, %xmm9, %xmm6;; vmovdqu .Lshufb_16x16b(%rip), %xmm8; vmovdqu 1 * 16(%rax), %xmm9; vpshufb %xmm8, %xmm10, %xmm10; vpshufb %xmm8, %xmm11, %xmm11; vpshufb %xmm8, %xmm12, %xmm12; vpshufb %xmm8, %xmm13, %xmm13; vpshufb %xmm8, %xmm14, %xmm14; vpshufb %xmm8, %xmm15, %xmm15; vpshufb %xmm8, %xmm9, %xmm9; vpshufb %xmm8, %xmm0, %xmm0; vpshufb %xmm8, %xmm1, %xmm1; vpshufb %xmm8, %xmm2, %xmm2; vpshufb %xmm8, %xmm3, %xmm3; vpshufb %xmm8, %xmm4, %xmm4; vpshufb %xmm8, %xmm5, %xmm5; vpshufb %xmm8, %xmm6, %xmm6; vpshufb %xmm8, %xmm7, %xmm7; vmovdqu %xmm7, 1 * 16(%rax); vmovdqu (%rax), %xmm7; vpshufb %xmm8, %xmm7, %xmm8; vmovdqu %xmm6, (%rax); vpunpckhdq %xmm12, %xmm8, %xmm7; vpunpckldq %xmm12, %xmm8, %xmm8; vpunpckldq %xmm4, %xmm0, %xmm6; vpunpckhdq %xmm4, %xmm0, %xmm0; vpunpckhqdq %xmm6, %xmm8, %xmm12; vpunpcklqdq %xmm6, %xmm8, %xmm8; vpunpckhqdq %xmm0, %xmm7, %xmm4; vpunpcklqdq %xmm0, %xmm7, %xmm0;; vpunpckhdq %xmm13, %xmm9, %xmm7; vpunpckldq %xmm13, %xmm9, %xmm9; vpunpckldq %xmm5, %xmm1, %xmm6; vpunpckhdq %xmm5, %xmm1, %xmm1; vpunpckhqdq %xmm6, %xmm9, %xmm13; vpunpcklqdq %xmm6, %xmm9, %xmm9; vpunpckhqdq %xmm1, %xmm7, %xmm5; vpunpcklqdq %xmm1, %xmm7, %xmm1;; vmovdqu (%rax), %xmm6; vmovdqu 1 * 16(%rax), %xmm7; vmovdqu %xmm12, (%rax); vmovdqu %xmm13, 1 * 16(%rax); vpunpckhdq %xmm14, %xmm10, %xmm13; vpunpckldq %xmm14, %xmm10, %xmm10; vpunpckldq %xmm6, %xmm2, %xmm12; vpunpckhdq %xmm6, %xmm2, %xmm2; vpunpckhqdq %xmm12, %xmm10, %xmm14; vpunpcklqdq %xmm12, %xmm10, %xmm10; vpunpckhqdq %xmm2, %xmm13, %xmm6; vpunpcklqdq %xmm2, %xmm13, %xmm2;; vpunpckhdq %xmm15, %xmm11, %xmm13; vpunpckldq %xmm15, %xmm11, %xmm11; vpunpckldq %xmm7, %xmm3, %xmm12; vpunpckhdq %xmm7, %xmm3, %xmm3; vpunpckhqdq %xmm12, %xmm11, %xmm15; vpunpcklqdq %xmm12, %xmm11, %xmm11; vpunpckhqdq %xmm3, %xmm13, %xmm7; vpunpcklqdq %xmm3, %xmm13, %xmm3;; vmovdqu (%rax), %xmm12; vmovdqu 1 * 16(%rax), %xmm13;; vmovdqu %xmm0, (%rax); vmovq (0)(%rdi, %r8, 8), %xmm0; vpshufb .Lpack_bswap(%rip), %xmm0, %xmm0; vpxor %xmm0, %xmm15, %xmm15; vpxor %xmm0, %xmm14, %xmm14; vpxor %xmm0, %xmm13, %xmm13; vpxor %xmm0, %xmm12, %xmm12; vpxor %xmm0, %xmm11, %xmm11; vpxor %xmm0, %xmm10, %xmm10; vpxor %xmm0, %xmm9, %xmm9; vpxor %xmm0, %xmm8, %xmm8; vpxor %xmm0, %xmm7, %xmm7; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm0, %xmm4, %xmm4; vpxor %xmm0, %xmm3, %xmm3; vpxor %xmm0, %xmm2, %xmm2; vpxor %xmm0, %xmm1, %xmm1; vpxor (%rax), %xmm0, %xmm0;;
ret;
.align 8
.Lenc_max32:
movl $32, %r8d;
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (24) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (24) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (24) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (24) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((24) + 2) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16( Line truncated
jmp .Lenc_done;
.align 8
__camellia_dec_blk16:
leaq 8 * 16(%rax), %rcx;
vmovdqu %xmm11, (%rax); vmovdqu %xmm15, (%rcx); vpunpckhdq %xmm4, %xmm0, %xmm15; vpunpckldq %xmm4, %xmm0, %xmm0; vpunpckldq %xmm12, %xmm8, %xmm11; vpunpckhdq %xmm12, %xmm8, %xmm8; vpunpckhqdq %xmm11, %xmm0, %xmm4; vpunpcklqdq %xmm11, %xmm0, %xmm0; vpunpckhqdq %xmm8, %xmm15, %xmm12; vpunpcklqdq %xmm8, %xmm15, %xmm8;; vpunpckhdq %xmm5, %xmm1, %xmm15; vpunpckldq %xmm5, %xmm1, %xmm1; vpunpckldq %xmm13, %xmm9, %xmm11; vpunpckhdq %xmm13, %xmm9, %xmm9; vpunpckhqdq %xmm11, %xmm1, %xmm5; vpunpcklqdq %xmm11, %xmm1, %xmm1; vpunpckhqdq %xmm9, %xmm15, %xmm13; vpunpcklqdq %xmm9, %xmm15, %xmm9;; vmovdqu (%rax), %xmm11; vmovdqu (%rcx), %xmm15; vmovdqu %xmm0, (%rax); vmovdqu %xmm4, (%rcx); vpunpckhdq %xmm6, %xmm2, %xmm4; vpunpckldq %xmm6, %xmm2, %xmm2; vpunpckldq %xmm14, %xmm10, %xmm0; vpunpckhdq %xmm14, %xmm10, %xmm10; vpunpckhqdq %xmm0, %xmm2, %xmm6; vpunpcklqdq %xmm0, %xmm2, %xmm2; vpunpckhqdq %xmm10, %xmm4, %xmm14; vpunpcklqdq %xmm10, %xmm4, %xmm10;; vpunpckhdq %xmm7, %xmm3, %xmm4; vpunpckldq %xmm7, %xmm3, %xmm3; vpunpckldq %xmm15, %xmm11, %xmm0; vpunpckhdq %xmm15, %xmm11, %xmm11; vpunpckhqdq %xmm0, %xmm3, %xmm7; vpunpcklqdq %xmm0, %xmm3, %xmm3; vpunpckhqdq %xmm11, %xmm4, %xmm15; vpunpcklqdq %xmm11, %xmm4, %xmm11;; vmovdqu .Lshufb_16x16b(%rip), %xmm0; vmovdqu (%rcx), %xmm4; vpshufb %xmm0, %xmm8, %xmm8; vpshufb %xmm0, %xmm12, %xmm12; vpshufb %xmm0, %xmm1, %xmm1; vpshufb %xmm0, %xmm5, %xmm5; vpshufb %xmm0, %xmm9, %xmm9; vpshufb %xmm0, %xmm13, %xmm13; vpshufb %xmm0, %xmm4, %xmm4; vpshufb %xmm0, %xmm2, %xmm2; vpshufb %xmm0, %xmm6, %xmm6; vpshufb %xmm0, %xmm10, %xmm10; vpshufb %xmm0, %xmm14, %xmm14; vpshufb %xmm0, %xmm3, %xmm3; vpshufb %xmm0, %xmm7, %xmm7; vpshufb %xmm0, %xmm11, %xmm11; vpshufb %xmm0, %xmm15, %xmm15; vmovdqu %xmm15, (%rcx); vmovdqu (%rax), %xmm15; vpshufb %xmm0, %xmm15, %xmm0; vmovdqu %xmm11, (%rax); vpunpckhdq %xmm1, %xmm0, %xmm15; vpunpckldq %xmm1, %xmm0, %xmm0; vpunpckldq %xmm3, %xmm2, %xmm11; vpunpckhdq %xmm3, %xmm2, %xmm2; vpunpckhqdq %xmm11, %xmm0, %xmm1; vpunpcklqdq %xmm11, %xmm0, %xmm0; vpunpckhqdq %xmm2, %xmm15, %xmm3; vpunpcklqdq %xmm2, %xmm15, %xmm2;; vpunpckhdq %xmm5, %xmm4, %xmm15; vpunpckldq %xmm5, %xmm4, %xmm4; vpunpckldq %xmm7, %xmm6, %xmm11; vpunpckhdq %xmm7, %xmm6, %xmm6; vpunpckhqdq %xmm11, %xmm4, %xmm5; vpunpcklqdq %xmm11, %xmm4, %xmm4; vpunpckhqdq %xmm6, %xmm15, %xmm7; vpunpcklqdq %xmm6, %xmm15, %xmm6;; vmovdqu (%rax), %xmm11; vmovdqu (%rcx), %xmm15; vmovdqu %xmm1, (%rax); vmovdqu %xmm5, (%rcx); vpunpckhdq %xmm9, %xmm8, %xmm5; vpunpckldq %xmm9, %xmm8, %xmm8; vpunpckldq %xmm11, %xmm10, %xmm1; vpunpckhdq %xmm11, %xmm10, %xmm10; vpunpckhqdq %xmm1, %xmm8, %xmm9; vpunpcklqdq %xmm1, %xmm8, %xmm8; vpunpckhqdq %xmm10, %xmm5, %xmm11; vpunpcklqdq %xmm10, %xmm5, %xmm10;; vpunpckhdq %xmm13, %xmm12, %xmm5; vpunpckldq %xmm13, %xmm12, %xmm12; vpunpckldq %xmm15, %xmm14, %xmm1; vpunpckhdq %xmm15, %xmm14, %xmm14; vpunpckhqdq %xmm1, %xmm12, %xmm13; vpunpcklqdq %xmm1, %xmm12, %xmm12; vpunpckhqdq %xmm14, %xmm5, %xmm15; vpunpcklqdq %xmm14, %xmm5, %xmm14;; vmovdqu (%rax), %xmm1; vmovdqu (%rcx), %xmm5;; vmovdqu %xmm0, 0 * 16(%rax); vmovdqu %xmm1, 1 * 16(%rax); vmovdqu %xmm2, 2 * 16(%rax); vmovdqu %xmm3, 3 * 16(%rax); vmovdqu %xmm4, 4 * 16(%rax); vmovdqu %xmm5, 5 * 16(%rax); vmovdqu %xmm6, 6 * 16(%rax); vmovdqu %xmm7, 7 * 16(%rax); vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovdqu %xmm12, 4 * 16(%rcx); vmovdqu %xmm13, 5 * 16(%rcx); vmovdqu %xmm14, 6 * 16(%rcx); vmovdqu %xmm15, 7 * 16(%rcx);;
cmpl $32, %r8d;
je .Ldec_max32;
.Ldec_max24:
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((16) + 7) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16( Line truncated
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (16) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (16) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (16) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (16) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((8) + 7) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16(% Line truncated
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (8) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (8) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (8) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (8) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((0) + 7) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16(% Line truncated
vmovdqu 0 * 16(%rcx), %xmm8;
vmovdqu 1 * 16(%rcx), %xmm9;
vmovdqu 2 * 16(%rcx), %xmm10;
vmovdqu 3 * 16(%rcx), %xmm11;
vmovdqu 4 * 16(%rcx), %xmm12;
vmovdqu 5 * 16(%rcx), %xmm13;
vmovdqu 6 * 16(%rcx), %xmm14;
vmovdqu 7 * 16(%rcx), %xmm15;
vmovdqu %xmm6, (%rax); vmovdqu %xmm7, 1 * 16(%rax); vpunpckhdq %xmm9, %xmm8, %xmm7; vpunpckldq %xmm9, %xmm8, %xmm8; vpunpckldq %xmm11, %xmm10, %xmm6; vpunpckhdq %xmm11, %xmm10, %xmm10; vpunpckhqdq %xmm6, %xmm8, %xmm9; vpunpcklqdq %xmm6, %xmm8, %xmm8; vpunpckhqdq %xmm10, %xmm7, %xmm11; vpunpcklqdq %xmm10, %xmm7, %xmm10;; vpunpckhdq %xmm13, %xmm12, %xmm7; vpunpckldq %xmm13, %xmm12, %xmm12; vpunpckldq %xmm15, %xmm14, %xmm6; vpunpckhdq %xmm15, %xmm14, %xmm14; vpunpckhqdq %xmm6, %xmm12, %xmm13; vpunpcklqdq %xmm6, %xmm12, %xmm12; vpunpckhqdq %xmm14, %xmm7, %xmm15; vpunpcklqdq %xmm14, %xmm7, %xmm14;; vmovdqu (%rax), %xmm6; vmovdqu 1 * 16(%rax), %xmm7; vmovdqu %xmm8, (%rax); vmovdqu %xmm9, 1 * 16(%rax); vpunpckhdq %xmm1, %xmm0, %xmm9; vpunpckldq %xmm1, %xmm0, %xmm0; vpunpckldq %xmm3, %xmm2, %xmm8; vpunpckhdq %xmm3, %xmm2, %xmm2; vpunpckhqdq %xmm8, %xmm0, %xmm1; vpunpcklqdq %xmm8, %xmm0, %xmm0; vpunpckhqdq %xmm2, %xmm9, %xmm3; vpunpcklqdq %xmm2, %xmm9, %xmm2;; vpunpckhdq %xmm5, %xmm4, %xmm9; vpunpckldq %xmm5, %xmm4, %xmm4; vpunpckldq %xmm7, %xmm6, %xmm8; vpunpckhdq %xmm7, %xmm6, %xmm6; vpunpckhqdq %xmm8, %xmm4, %xmm5; vpunpcklqdq %xmm8, %xmm4, %xmm4; vpunpckhqdq %xmm6, %xmm9, %xmm7; vpunpcklqdq %xmm6, %xmm9, %xmm6;; vmovdqu .Lshufb_16x16b(%rip), %xmm8; vmovdqu 1 * 16(%rax), %xmm9; vpshufb %xmm8, %xmm10, %xmm10; vpshufb %xmm8, %xmm11, %xmm11; vpshufb %xmm8, %xmm12, %xmm12; vpshufb %xmm8, %xmm13, %xmm13; vpshufb %xmm8, %xmm14, %xmm14; vpshufb %xmm8, %xmm15, %xmm15; vpshufb %xmm8, %xmm9, %xmm9; vpshufb %xmm8, %xmm0, %xmm0; vpshufb %xmm8, %xmm1, %xmm1; vpshufb %xmm8, %xmm2, %xmm2; vpshufb %xmm8, %xmm3, %xmm3; vpshufb %xmm8, %xmm4, %xmm4; vpshufb %xmm8, %xmm5, %xmm5; vpshufb %xmm8, %xmm6, %xmm6; vpshufb %xmm8, %xmm7, %xmm7; vmovdqu %xmm7, 1 * 16(%rax); vmovdqu (%rax), %xmm7; vpshufb %xmm8, %xmm7, %xmm8; vmovdqu %xmm6, (%rax); vpunpckhdq %xmm12, %xmm8, %xmm7; vpunpckldq %xmm12, %xmm8, %xmm8; vpunpckldq %xmm4, %xmm0, %xmm6; vpunpckhdq %xmm4, %xmm0, %xmm0; vpunpckhqdq %xmm6, %xmm8, %xmm12; vpunpcklqdq %xmm6, %xmm8, %xmm8; vpunpckhqdq %xmm0, %xmm7, %xmm4; vpunpcklqdq %xmm0, %xmm7, %xmm0;; vpunpckhdq %xmm13, %xmm9, %xmm7; vpunpckldq %xmm13, %xmm9, %xmm9; vpunpckldq %xmm5, %xmm1, %xmm6; vpunpckhdq %xmm5, %xmm1, %xmm1; vpunpckhqdq %xmm6, %xmm9, %xmm13; vpunpcklqdq %xmm6, %xmm9, %xmm9; vpunpckhqdq %xmm1, %xmm7, %xmm5; vpunpcklqdq %xmm1, %xmm7, %xmm1;; vmovdqu (%rax), %xmm6; vmovdqu 1 * 16(%rax), %xmm7; vmovdqu %xmm12, (%rax); vmovdqu %xmm13, 1 * 16(%rax); vpunpckhdq %xmm14, %xmm10, %xmm13; vpunpckldq %xmm14, %xmm10, %xmm10; vpunpckldq %xmm6, %xmm2, %xmm12; vpunpckhdq %xmm6, %xmm2, %xmm2; vpunpckhqdq %xmm12, %xmm10, %xmm14; vpunpcklqdq %xmm12, %xmm10, %xmm10; vpunpckhqdq %xmm2, %xmm13, %xmm6; vpunpcklqdq %xmm2, %xmm13, %xmm2;; vpunpckhdq %xmm15, %xmm11, %xmm13; vpunpckldq %xmm15, %xmm11, %xmm11; vpunpckldq %xmm7, %xmm3, %xmm12; vpunpckhdq %xmm7, %xmm3, %xmm3; vpunpckhqdq %xmm12, %xmm11, %xmm15; vpunpcklqdq %xmm12, %xmm11, %xmm11; vpunpckhqdq %xmm3, %xmm13, %xmm7; vpunpcklqdq %xmm3, %xmm13, %xmm3;; vmovdqu (%rax), %xmm12; vmovdqu 1 * 16(%rax), %xmm13;; vmovdqu %xmm0, (%rax); vmovq (0)(%rdi), %xmm0; vpshufb .Lpack_bswap(%rip), %xmm0, %xmm0; vpxor %xmm0, %xmm15, %xmm15; vpxor %xmm0, %xmm14, %xmm14; vpxor %xmm0, %xmm13, %xmm13; vpxor %xmm0, %xmm12, %xmm12; vpxor %xmm0, %xmm11, %xmm11; vpxor %xmm0, %xmm10, %xmm10; vpxor %xmm0, %xmm9, %xmm9; vpxor %xmm0, %xmm8, %xmm8; vpxor %xmm0, %xmm7, %xmm7; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm0, %xmm4, %xmm4; vpxor %xmm0, %xmm3, %xmm3; vpxor %xmm0, %xmm2, %xmm2; vpxor %xmm0, %xmm1, %xmm1; vpxor (%rax), %xmm0, %xmm0;;
ret;
.align 8
.Ldec_max32:
vmovdqu .Linv_shift_row(%rip), %xmm12; vbroadcastss .L0f0f0f0f(%rip), %xmm15; vmovdqu .Lpre_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpre_tf_hi_s1(%rip), %xmm9; vpshufb %xmm12, %xmm0, %xmm0; vpshufb %xmm12, %xmm7, %xmm7; vpshufb %xmm12, %xmm1, %xmm1; vpshufb %xmm12, %xmm4, %xmm4; vpshufb %xmm12, %xmm2, %xmm2; vpshufb %xmm12, %xmm5, %xmm5; vpshufb %xmm12, %xmm3, %xmm3; vpshufb %xmm12, %xmm6, %xmm6; vmovdqu .Lpre_tf_lo_s4(%rip), %xmm10; vmovdqu .Lpre_tf_hi_s4(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm1, %xmm15, %xmm14; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm1, %xmm9, %xmm1; vpxor %xmm14, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm14; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm4, %xmm9, %xmm4; vpxor %xmm14, %xmm4, %xmm4;; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm2, %xmm9, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm5, %xmm9, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm12, %xmm12, %xmm12; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm3, %xmm11, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm6, %xmm11, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s1(%rip), %xmm8; vmovdqu .Lpost_tf_hi_s1(%rip), %xmm9; vaesenclast %xmm12, %xmm0, %xmm0; vaesenclast %xmm12, %xmm7, %xmm7; vaesenclast %xmm12, %xmm1, %xmm1; vaesenclast %xmm12, %xmm4, %xmm4; vaesenclast %xmm12, %xmm2, %xmm2; vaesenclast %xmm12, %xmm5, %xmm5; vaesenclast %xmm12, %xmm3, %xmm3; vaesenclast %xmm12, %xmm6, %xmm6; vmovdqu .Lpost_tf_lo_s3(%rip), %xmm10; vmovdqu .Lpost_tf_hi_s3(%rip), %xmm11; vpand %xmm0, %xmm15, %xmm14; vpandn %xmm0, %xmm15, %xmm0; vpsrld $4, %xmm0, %xmm0; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm0, %xmm9, %xmm0; vpxor %xmm14, %xmm0, %xmm0;; vpand %xmm7, %xmm15, %xmm14; vpandn %xmm7, %xmm15, %xmm7; vpsrld $4, %xmm7, %xmm7; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm7, %xmm9, %xmm7; vpxor %xmm14, %xmm7, %xmm7;; vpand %xmm3, %xmm15, %xmm14; vpandn %xmm3, %xmm15, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm3, %xmm9, %xmm3; vpxor %xmm14, %xmm3, %xmm3;; vpand %xmm6, %xmm15, %xmm14; vpandn %xmm6, %xmm15, %xmm6; vpsrld $4, %xmm6, %xmm6; vpshufb %xmm14, %xmm8, %xmm14; vpshufb %xmm6, %xmm9, %xmm6; vpxor %xmm14, %xmm6, %xmm6;; vmovdqu .Lpost_tf_lo_s2(%rip), %xmm12; vmovdqu .Lpost_tf_hi_s2(%rip), %xmm13; vpand %xmm2, %xmm15, %xmm14; vpandn %xmm2, %xmm15, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm2, %xmm11, %xmm2; vpxor %xmm14, %xmm2, %xmm2;; vpand %xmm5, %xmm15, %xmm14; vpandn %xmm5, %xmm15, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm14, %xmm10, %xmm14; vpshufb %xmm5, %xmm11, %xmm5; vpxor %xmm14, %xmm5, %xmm5;; vpxor %xmm14, %xmm14, %xmm14; vmovq (0 + ((24) + 7) * 8)(%rdi), %xmm8; vpand %xmm1, %xmm15, %xmm10; vpandn %xmm1, %xmm15, %xmm1; vpsrld $4, %xmm1, %xmm1; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm1, %xmm13, %xmm1; vpxor %xmm10, %xmm1, %xmm1;; vpand %xmm4, %xmm15, %xmm10; vpandn %xmm4, %xmm15, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm10, %xmm12, %xmm10; vpshufb %xmm4, %xmm13, %xmm4; vpxor %xmm10, %xmm4, %xmm4;; vpsrldq $5, %xmm8, %xmm13; vpsrldq $1, %xmm8, %xmm9; vpsrldq $2, %xmm8, %xmm10; vpsrldq $3, %xmm8, %xmm11; vpsrldq $4, %xmm8, %xmm12; vpshufb %xmm14, %xmm8, %xmm8; vpshufb %xmm14, %xmm9, %xmm9; vpshufb %xmm14, %xmm10, %xmm10; vpshufb %xmm14, %xmm11, %xmm11; vpshufb %xmm14, %xmm12, %xmm12; vpsrldq $2, %xmm13, %xmm15; vpshufb %xmm14, %xmm15, %xmm15; vpxor %xmm5, %xmm0, %xmm0; vpxor %xmm6, %xmm1, %xmm1; vpxor %xmm7, %xmm2, %xmm2; vpxor %xmm4, %xmm3, %xmm3; vpxor %xmm2, %xmm4, %xmm4; vpxor %xmm3, %xmm5, %xmm5; vpxor %xmm0, %xmm6, %xmm6; vpxor %xmm1, %xmm7, %xmm7; vpxor %xmm7, %xmm0, %xmm0; vpxor %xmm4, %xmm1, %xmm1; vpxor %xmm5, %xmm2, %xmm2; vpxor %xmm6, %xmm3, %xmm3; vpxor %xmm3, %xmm4, %xmm4; vpxor %xmm0, %xmm5, %xmm5; vpxor %xmm1, %xmm6, %xmm6; vpxor %xmm2, %xmm7, %xmm7; vpxor %xmm11, %xmm4, %xmm4; vpxor 0 * 16(%rcx), %xmm4, %xmm4; vpxor %xmm10, %xmm5, %xmm5; vpxor 1 * 16(%rcx), %xmm5, %xmm5; vpsrldq $1, %xmm13, %xmm11; vpshufb %xmm14, %xmm13, %xmm13; vpshufb %xmm14, %xmm11, %xmm14; vpxor %xmm9, %xmm6, %xmm6; vpxor 2 * 16(%rcx), %xmm6, %xmm6; vpxor %xmm8, %xmm7, %xmm7; vpxor 3 * 16(%rcx), %xmm7, %xmm7; vpxor %xmm15, %xmm0, %xmm0; vpxor 4 * 16( Line truncated
vpxor %xmm12, %xmm12, %xmm12; vmovd ((0 + (24) * 8) + 8)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand %xmm0, %xmm8, %xmm8; vpand %xmm1, %xmm9, %xmm9; vpand %xmm2, %xmm10, %xmm10; vpand %xmm3, %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor %xmm4, %xmm8, %xmm4; vmovdqu %xmm4, 4 * 16(%rax); vpxor %xmm5, %xmm9, %xmm5; vmovdqu %xmm5, 5 * 16(%rax); vpxor %xmm6, %xmm10, %xmm6; vmovdqu %xmm6, 6 * 16(%rax); vpxor %xmm7, %xmm11, %xmm7; vmovdqu %xmm7, 7 * 16(%rax); vmovd ((0 + (24) * 8) + 4)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor 4 * 16(%rcx), %xmm8, %xmm8; vpor 5 * 16(%rcx), %xmm9, %xmm9; vpor 6 * 16(%rcx), %xmm10, %xmm10; vpor 7 * 16(%rcx), %xmm11, %xmm11; vpxor 0 * 16(%rcx), %xmm8, %xmm8; vpxor 1 * 16(%rcx), %xmm9, %xmm9; vpxor 2 * 16(%rcx), %xmm10, %xmm10; vpxor 3 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 0 * 16(%rcx); vmovdqu %xmm9, 1 * 16(%rcx); vmovdqu %xmm10, 2 * 16(%rcx); vmovdqu %xmm11, 3 * 16(%rcx); vmovd ((0 + (24) * 8) + 0)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpand 0 * 16(%rcx), %xmm8, %xmm8; vpand 1 * 16(%rcx), %xmm9, %xmm9; vpand 2 * 16(%rcx), %xmm10, %xmm10; vpand 3 * 16(%rcx), %xmm11, %xmm11; vpcmpgtb %xmm11, %xmm12, %xmm13; vpaddb %xmm11, %xmm11, %xmm11; vpabsb %xmm13, %xmm13; vpcmpgtb %xmm10, %xmm12, %xmm14; vpaddb %xmm10, %xmm10, %xmm10; vpabsb %xmm14, %xmm14; vpcmpgtb %xmm9, %xmm12, %xmm15; vpaddb %xmm9, %xmm9, %xmm9; vpabsb %xmm15, %xmm15; vpor %xmm13, %xmm10, %xmm10; vpcmpgtb %xmm8, %xmm12, %xmm13; vpaddb %xmm8, %xmm8, %xmm8; vpabsb %xmm13, %xmm13; vpor %xmm14, %xmm9, %xmm9; vpor %xmm15, %xmm8, %xmm8; vpor %xmm13, %xmm11, %xmm11;; vpxor 4 * 16(%rcx), %xmm8, %xmm8; vpxor 5 * 16(%rcx), %xmm9, %xmm9; vpxor 6 * 16(%rcx), %xmm10, %xmm10; vpxor 7 * 16(%rcx), %xmm11, %xmm11; vmovdqu %xmm8, 4 * 16(%rcx); vmovdqu %xmm9, 5 * 16(%rcx); vmovdqu %xmm10, 6 * 16(%rcx); vmovdqu %xmm11, 7 * 16(%rcx); vmovd ((0 + (24) * 8) + 12)(%rdi), %xmm8; vpshufb %xmm12, %xmm8, %xmm11; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm10; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm9; vpsrldq $1, %xmm8, %xmm8; vpshufb %xmm12, %xmm8, %xmm8; vpor %xmm4, %xmm8, %xmm8; vpor %xmm5, %xmm9, %xmm9; vpor %xmm6, %xmm10, %xmm10; vpor %xmm7, %xmm11, %xmm11; vpxor %xmm0, %xmm8, %xmm0; vmovdqu %xmm0, 0 * 16(%rax); vpxor %xmm1, %xmm9, %xmm1; vmovdqu %xmm1, 1 * 16(%rax); vpxor %xmm2, %xmm10, %xmm2; vmovdqu %xmm2, 2 * 16(%rax); vpxor %xmm3, %xmm11, %xmm3; vmovdqu %xmm3, 3 * 16(%rax);;
jmp .Ldec_max24;
.align 8
.global camellia_ecb_enc_16way
.global _camellia_ecb_enc_16way
camellia_ecb_enc_16way:
_camellia_ecb_enc_16way:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
vzeroupper;
vmovq (0)(%rdi), %xmm0; vpshufb .Lpack_bswap(%rip), %xmm0, %xmm0; vpxor 0 * 16(%rdx), %xmm0, %xmm15; vpxor 1 * 16(%rdx), %xmm0, %xmm14; vpxor 2 * 16(%rdx), %xmm0, %xmm13; vpxor 3 * 16(%rdx), %xmm0, %xmm12; vpxor 4 * 16(%rdx), %xmm0, %xmm11; vpxor 5 * 16(%rdx), %xmm0, %xmm10; vpxor 6 * 16(%rdx), %xmm0, %xmm9; vpxor 7 * 16(%rdx), %xmm0, %xmm8; vpxor 8 * 16(%rdx), %xmm0, %xmm7; vpxor 9 * 16(%rdx), %xmm0, %xmm6; vpxor 10 * 16(%rdx), %xmm0, %xmm5; vpxor 11 * 16(%rdx), %xmm0, %xmm4; vpxor 12 * 16(%rdx), %xmm0, %xmm3; vpxor 13 * 16(%rdx), %xmm0, %xmm2; vpxor 14 * 16(%rdx), %xmm0, %xmm1; vpxor 15 * 16(%rdx), %xmm0, %xmm0;;
movq %rsi, %rax;
call __camellia_enc_blk16;
vmovdqu %xmm7, 0 * 16(%rsi); vmovdqu %xmm6, 1 * 16(%rsi); vmovdqu %xmm5, 2 * 16(%rsi); vmovdqu %xmm4, 3 * 16(%rsi); vmovdqu %xmm3, 4 * 16(%rsi); vmovdqu %xmm2, 5 * 16(%rsi); vmovdqu %xmm1, 6 * 16(%rsi); vmovdqu %xmm0, 7 * 16(%rsi); vmovdqu %xmm15, 8 * 16(%rsi); vmovdqu %xmm14, 9 * 16(%rsi); vmovdqu %xmm13, 10 * 16(%rsi); vmovdqu %xmm12, 11 * 16(%rsi); vmovdqu %xmm11, 12 * 16(%rsi); vmovdqu %xmm10, 13 * 16(%rsi); vmovdqu %xmm9, 14 * 16(%rsi); vmovdqu %xmm8, 15 * 16(%rsi);;
vzeroupper;
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.align 8
.global camellia_ecb_dec_16way
.global _camellia_ecb_dec_16way
camellia_ecb_dec_16way:
_camellia_ecb_dec_16way:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
vzeroupper;
cmpl $16, 272(%rdi);
movl $32, %r8d;
movl $24, %eax;
cmovel %eax, %r8d;
vmovq (0)(%rdi, %r8, 8), %xmm0; vpshufb .Lpack_bswap(%rip), %xmm0, %xmm0; vpxor 0 * 16(%rdx), %xmm0, %xmm15; vpxor 1 * 16(%rdx), %xmm0, %xmm14; vpxor 2 * 16(%rdx), %xmm0, %xmm13; vpxor 3 * 16(%rdx), %xmm0, %xmm12; vpxor 4 * 16(%rdx), %xmm0, %xmm11; vpxor 5 * 16(%rdx), %xmm0, %xmm10; vpxor 6 * 16(%rdx), %xmm0, %xmm9; vpxor 7 * 16(%rdx), %xmm0, %xmm8; vpxor 8 * 16(%rdx), %xmm0, %xmm7; vpxor 9 * 16(%rdx), %xmm0, %xmm6; vpxor 10 * 16(%rdx), %xmm0, %xmm5; vpxor 11 * 16(%rdx), %xmm0, %xmm4; vpxor 12 * 16(%rdx), %xmm0, %xmm3; vpxor 13 * 16(%rdx), %xmm0, %xmm2; vpxor 14 * 16(%rdx), %xmm0, %xmm1; vpxor 15 * 16(%rdx), %xmm0, %xmm0;;
movq %rsi, %rax;
call __camellia_dec_blk16;
vmovdqu %xmm7, 0 * 16(%rsi); vmovdqu %xmm6, 1 * 16(%rsi); vmovdqu %xmm5, 2 * 16(%rsi); vmovdqu %xmm4, 3 * 16(%rsi); vmovdqu %xmm3, 4 * 16(%rsi); vmovdqu %xmm2, 5 * 16(%rsi); vmovdqu %xmm1, 6 * 16(%rsi); vmovdqu %xmm0, 7 * 16(%rsi); vmovdqu %xmm15, 8 * 16(%rsi); vmovdqu %xmm14, 9 * 16(%rsi); vmovdqu %xmm13, 10 * 16(%rsi); vmovdqu %xmm12, 11 * 16(%rsi); vmovdqu %xmm11, 12 * 16(%rsi); vmovdqu %xmm10, 13 * 16(%rsi); vmovdqu %xmm9, 14 * 16(%rsi); vmovdqu %xmm8, 15 * 16(%rsi);;
vzeroupper;
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.data
.align 16
.Linv_shift_row_and_unpcklbw:
.byte 0x00, 0xff, 0x0d, 0xff, 0x0a, 0xff, 0x07, 0xff
.byte 0x04, 0xff, 0x01, 0xff, 0x0e, 0xff, 0x0b, 0xff
.Lsp0044440444044404mask:
.long 0xffff0404, 0x0404ff04;
.long 0x0d0dff0d, 0x0d0dff0d;
.Lsp1110111010011110mask:
.long 0x000000ff, 0x000000ff;
.long 0x0bffff0b, 0x0b0b0bff;
.Lsp0222022222000222mask:
.long 0xff060606, 0xff060606;
.long 0x0c0cffff, 0xff0c0c0c;
.Lsp3033303303303033mask:
.long 0x04ff0404, 0x04ff0404;
.long 0xff0a0aff, 0x0aff0a0a;
.Lsbox4_input_mask:
.byte 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00;
.Lsigma1:
.long 0x3BCC908B, 0xA09E667F;
.Lsigma2:
.long 0x4CAA73B2, 0xB67AE858;
.Lsigma3:
.long 0xE94F82BE, 0xC6EF372F;
.Lsigma4:
.long 0xF1D36F1C, 0x54FF53A5;
.Lsigma5:
.long 0xDE682D1D, 0x10E527FA;
.Lsigma6:
.long 0xB3E6C1FD, 0xB05688C2;
.text
.align 8
.globl camellia_setup256
.globl _camellia_setup256
camellia_setup256:
_camellia_setup256:
vzeroupper;
vmovdqu (%rsi), %xmm0;
vmovdqu 16(%rsi), %xmm1;
vpshufb .Lbswap128_mask(%rip), %xmm0, %xmm0;
vpshufb .Lbswap128_mask(%rip), %xmm1, %xmm1;
vmovdqa .Linv_shift_row_and_unpcklbw(%rip), %xmm11;
vmovq .Lsbox4_input_mask(%rip), %xmm12;
vbroadcastss .L0f0f0f0f(%rip), %xmm13;
vmovdqa .Lpre_tf_lo_s1(%rip), %xmm14;
vmovdqa .Lpre_tf_hi_s1(%rip), %xmm15;
vpxor %xmm0, %xmm1, %xmm3;
vpsrldq $8, %xmm1, %xmm6;
vpsrldq $8, %xmm3, %xmm2;
vpslldq $8, %xmm3, %xmm3;
vpsrldq $8, %xmm3, %xmm3;
vmovq .Lsigma1(%rip), %xmm5; vpxor %xmm4, %xmm4, %xmm9; vpxor %xmm2, %xmm5, %xmm4; vpand %xmm4, %xmm12, %xmm5; vpandn %xmm4, %xmm12, %xmm4; vpaddw %xmm5, %xmm5, %xmm7; vpsrlw $7, %xmm5, %xmm5; vpor %xmm5, %xmm7, %xmm5; vpand %xmm12, %xmm5, %xmm5; vpor %xmm5, %xmm4, %xmm4; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm5; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm4, %xmm13, %xmm8; vpandn %xmm4, %xmm13, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm4, %xmm15, %xmm4; vpxor %xmm8, %xmm4, %xmm4;; vaesenclast %xmm9, %xmm4, %xmm4; vpand %xmm4, %xmm13, %xmm8; vpandn %xmm4, %xmm13, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm8, %xmm5, %xmm8; vpshufb %xmm4, %xmm7, %xmm4; vpxor %xmm8, %xmm4, %xmm4;; vpshufb %xmm11, %xmm4, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm4, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm4, %xmm4; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm5; vpsllw $7, %xmm7, %xmm9; vpor %xmm5, %xmm8, %xmm5; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm5, %xmm5; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm4, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm5, %xmm5; vpxor %xmm7, %xmm5, %xmm5; vpsrldq $8, %xmm5, %xmm4; vpxor %xmm5, %xmm4, %xmm4;;
vpxor %xmm4, %xmm3, %xmm3;
vmovq .Lsigma2(%rip), %xmm5; vpxor %xmm2, %xmm2, %xmm9; vpxor %xmm3, %xmm5, %xmm2; vpand %xmm2, %xmm12, %xmm5; vpandn %xmm2, %xmm12, %xmm2; vpaddw %xmm5, %xmm5, %xmm7; vpsrlw $7, %xmm5, %xmm5; vpor %xmm5, %xmm7, %xmm5; vpand %xmm12, %xmm5, %xmm5; vpor %xmm5, %xmm2, %xmm2; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm5; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm2, %xmm13, %xmm8; vpandn %xmm2, %xmm13, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm2, %xmm15, %xmm2; vpxor %xmm8, %xmm2, %xmm2;; vaesenclast %xmm9, %xmm2, %xmm2; vpand %xmm2, %xmm13, %xmm8; vpandn %xmm2, %xmm13, %xmm2; vpsrld $4, %xmm2, %xmm2; vpshufb %xmm8, %xmm5, %xmm8; vpshufb %xmm2, %xmm7, %xmm2; vpxor %xmm8, %xmm2, %xmm2;; vpshufb %xmm11, %xmm2, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm2, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm2, %xmm2; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm5; vpsllw $7, %xmm7, %xmm9; vpor %xmm5, %xmm8, %xmm5; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm5, %xmm5; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm2, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm5, %xmm5; vpxor %xmm7, %xmm5, %xmm5; vpsrldq $8, %xmm5, %xmm2; vpxor %xmm5, %xmm2, %xmm2;;
vpxor %xmm6, %xmm2, %xmm2;
vmovq .Lsigma3(%rip), %xmm5; vpxor %xmm3, %xmm3, %xmm9; vpxor %xmm2, %xmm5, %xmm3; vpand %xmm3, %xmm12, %xmm5; vpandn %xmm3, %xmm12, %xmm3; vpaddw %xmm5, %xmm5, %xmm7; vpsrlw $7, %xmm5, %xmm5; vpor %xmm5, %xmm7, %xmm5; vpand %xmm12, %xmm5, %xmm5; vpor %xmm5, %xmm3, %xmm3; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm5; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm3, %xmm13, %xmm8; vpandn %xmm3, %xmm13, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm3, %xmm15, %xmm3; vpxor %xmm8, %xmm3, %xmm3;; vaesenclast %xmm9, %xmm3, %xmm3; vpand %xmm3, %xmm13, %xmm8; vpandn %xmm3, %xmm13, %xmm3; vpsrld $4, %xmm3, %xmm3; vpshufb %xmm8, %xmm5, %xmm8; vpshufb %xmm3, %xmm7, %xmm3; vpxor %xmm8, %xmm3, %xmm3;; vpshufb %xmm11, %xmm3, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm3, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm3, %xmm3; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm5; vpsllw $7, %xmm7, %xmm9; vpor %xmm5, %xmm8, %xmm5; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm5, %xmm5; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm3, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm5, %xmm5; vpxor %xmm7, %xmm5, %xmm5; vpsrldq $8, %xmm5, %xmm3; vpxor %xmm5, %xmm3, %xmm3;;
vpxor %xmm4, %xmm3, %xmm3;
vpxor %xmm1, %xmm3, %xmm3;
vmovq .Lsigma4(%rip), %xmm5; vpxor %xmm4, %xmm4, %xmm9; vpxor %xmm3, %xmm5, %xmm4; vpand %xmm4, %xmm12, %xmm5; vpandn %xmm4, %xmm12, %xmm4; vpaddw %xmm5, %xmm5, %xmm7; vpsrlw $7, %xmm5, %xmm5; vpor %xmm5, %xmm7, %xmm5; vpand %xmm12, %xmm5, %xmm5; vpor %xmm5, %xmm4, %xmm4; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm5; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm4, %xmm13, %xmm8; vpandn %xmm4, %xmm13, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm4, %xmm15, %xmm4; vpxor %xmm8, %xmm4, %xmm4;; vaesenclast %xmm9, %xmm4, %xmm4; vpand %xmm4, %xmm13, %xmm8; vpandn %xmm4, %xmm13, %xmm4; vpsrld $4, %xmm4, %xmm4; vpshufb %xmm8, %xmm5, %xmm8; vpshufb %xmm4, %xmm7, %xmm4; vpxor %xmm8, %xmm4, %xmm4;; vpshufb %xmm11, %xmm4, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm4, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm4, %xmm4; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm5; vpsllw $7, %xmm7, %xmm9; vpor %xmm5, %xmm8, %xmm5; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm5, %xmm5; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm4, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm5, %xmm5; vpxor %xmm7, %xmm5, %xmm5; vpsrldq $8, %xmm5, %xmm4; vpxor %xmm5, %xmm4, %xmm4;;
vpslldq $8, %xmm3, %xmm3;
vpxor %xmm4, %xmm2, %xmm2;
vpsrldq $8, %xmm3, %xmm3;
vpslldq $8, %xmm2, %xmm2;
vpor %xmm3, %xmm2, %xmm2;
vpxor %xmm2, %xmm1, %xmm3;
vpsrldq $8, %xmm3, %xmm4;
vpslldq $8, %xmm3, %xmm3;
vpsrldq $8, %xmm3, %xmm3;
vmovq .Lsigma5(%rip), %xmm6; vpxor %xmm5, %xmm5, %xmm9; vpxor %xmm4, %xmm6, %xmm5; vpand %xmm5, %xmm12, %xmm6; vpandn %xmm5, %xmm12, %xmm5; vpaddw %xmm6, %xmm6, %xmm7; vpsrlw $7, %xmm6, %xmm6; vpor %xmm6, %xmm7, %xmm6; vpand %xmm12, %xmm6, %xmm6; vpor %xmm6, %xmm5, %xmm5; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm6; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm5, %xmm13, %xmm8; vpandn %xmm5, %xmm13, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm5, %xmm15, %xmm5; vpxor %xmm8, %xmm5, %xmm5;; vaesenclast %xmm9, %xmm5, %xmm5; vpand %xmm5, %xmm13, %xmm8; vpandn %xmm5, %xmm13, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm8, %xmm6, %xmm8; vpshufb %xmm5, %xmm7, %xmm5; vpxor %xmm8, %xmm5, %xmm5;; vpshufb %xmm11, %xmm5, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm5, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm5, %xmm5; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm6; vpsllw $7, %xmm7, %xmm9; vpor %xmm6, %xmm8, %xmm6; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm6, %xmm6; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm5, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm6, %xmm6; vpxor %xmm7, %xmm6, %xmm6; vpsrldq $8, %xmm6, %xmm5; vpxor %xmm6, %xmm5, %xmm5;;
vpxor %xmm5, %xmm3, %xmm3;
vmovq .Lsigma6(%rip), %xmm6; vpxor %xmm5, %xmm5, %xmm9; vpxor %xmm3, %xmm6, %xmm5; vpand %xmm5, %xmm12, %xmm6; vpandn %xmm5, %xmm12, %xmm5; vpaddw %xmm6, %xmm6, %xmm7; vpsrlw $7, %xmm6, %xmm6; vpor %xmm6, %xmm7, %xmm6; vpand %xmm12, %xmm6, %xmm6; vpor %xmm6, %xmm5, %xmm5; vmovdqa .Lpost_tf_lo_s1(%rip), %xmm6; vmovdqa .Lpost_tf_hi_s1(%rip), %xmm7; vpand %xmm5, %xmm13, %xmm8; vpandn %xmm5, %xmm13, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm8, %xmm14, %xmm8; vpshufb %xmm5, %xmm15, %xmm5; vpxor %xmm8, %xmm5, %xmm5;; vaesenclast %xmm9, %xmm5, %xmm5; vpand %xmm5, %xmm13, %xmm8; vpandn %xmm5, %xmm13, %xmm5; vpsrld $4, %xmm5, %xmm5; vpshufb %xmm8, %xmm6, %xmm8; vpshufb %xmm5, %xmm7, %xmm5; vpxor %xmm8, %xmm5, %xmm5;; vpshufb %xmm11, %xmm5, %xmm7; vpshufb .Lsp0044440444044404mask(%rip), %xmm5, %xmm10; vpshufb .Lsp1110111010011110mask(%rip), %xmm5, %xmm5; vpaddb %xmm7, %xmm7, %xmm8; vpsrlw $7, %xmm7, %xmm6; vpsllw $7, %xmm7, %xmm9; vpor %xmm6, %xmm8, %xmm6; vpsrlw $1, %xmm7, %xmm7; vpshufb .Lsp0222022222000222mask(%rip), %xmm6, %xmm6; vpor %xmm7, %xmm9, %xmm7; vpxor %xmm5, %xmm10, %xmm10; vpshufb .Lsp3033303303303033mask(%rip), %xmm7, %xmm7; vpxor %xmm10, %xmm6, %xmm6; vpxor %xmm7, %xmm6, %xmm6; vpsrldq $8, %xmm6, %xmm5; vpxor %xmm6, %xmm5, %xmm5;;
vpslldq $8, %xmm3, %xmm3;
vpxor %xmm5, %xmm4, %xmm4;
vpsrldq $8, %xmm3, %xmm3;
vpslldq $8, %xmm4, %xmm4;
vpor %xmm3, %xmm4, %xmm3;
vmovdqu %xmm3, (((32)*8))(%rdi);
vpshufd $0x4e, %xmm1, %xmm4; vpsllq $(15), %xmm1, %xmm15; vpsrlq $(64-(15)), %xmm4, %xmm4; vpaddd %xmm15, %xmm4, %xmm4;;
vpshufd $0x4e, %xmm2, %xmm5; vpsllq $(15), %xmm2, %xmm15; vpsrlq $(64-(15)), %xmm5, %xmm5; vpaddd %xmm15, %xmm5, %xmm5;;
vpshufd $0x4e, %xmm1, %xmm6; vpsllq $(30), %xmm1, %xmm15; vpsrlq $(64-(30)), %xmm6, %xmm6; vpaddd %xmm15, %xmm6, %xmm6;;
vpshufd $0x4e, %xmm3, %xmm7; vpsllq $(30), %xmm3, %xmm15; vpsrlq $(64-(30)), %xmm7, %xmm7; vpaddd %xmm15, %xmm7, %xmm7;;
vpshufd $0x4e, %xmm0, %xmm8; vpsllq $(45), %xmm0, %xmm15; vpsrlq $(64-(45)), %xmm8, %xmm8; vpaddd %xmm15, %xmm8, %xmm8;;
vpshufd $0x4e, %xmm2, %xmm9; vpsllq $(45), %xmm2, %xmm15; vpsrlq $(64-(45)), %xmm9, %xmm9; vpaddd %xmm15, %xmm9, %xmm9;;
vpshufd $0x4e, %xmm0, %xmm10; vpsllq $(60), %xmm0, %xmm15; vpsrlq $(64-(60)), %xmm10, %xmm10; vpaddd %xmm15, %xmm10, %xmm10;;
vpshufd $0x4e, %xmm1, %xmm11; vpsllq $(60), %xmm1, %xmm15; vpsrlq $(64-(60)), %xmm11, %xmm11; vpaddd %xmm15, %xmm11, %xmm11;;
vpshufd $0x4e, %xmm3, %xmm12; vpsllq $(60), %xmm3, %xmm15; vpsrlq $(64-(60)), %xmm12, %xmm12; vpaddd %xmm15, %xmm12, %xmm12;;
vpslldq $8, %xmm0, %xmm15;
vpsrldq $8, %xmm15, %xmm15;
vpxor %xmm15, %xmm3, %xmm3;
vpxor %xmm15, %xmm4, %xmm4;
vpxor %xmm15, %xmm5, %xmm5;
vpandn %xmm15, %xmm6, %xmm13;
vpslldq $12, %xmm13, %xmm13;
vpsrldq $8, %xmm13, %xmm13;
vpxor %xmm13, %xmm15, %xmm15;
vpand %xmm15, %xmm6, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpxor %xmm15, %xmm7, %xmm7;
vpxor %xmm15, %xmm8, %xmm8;
vpxor %xmm15, %xmm9, %xmm9;
vpshufd $0x1b, %xmm0, %xmm0;
vpshufd $0x1b, %xmm3, %xmm3;
vpshufd $0x1b, %xmm4, %xmm4;
vpshufd $0x1b, %xmm5, %xmm5;
vpshufd $0x1b, %xmm6, %xmm6;
vpshufd $0x1b, %xmm7, %xmm7;
vpshufd $0x1b, %xmm8, %xmm8;
vpshufd $0x1b, %xmm9, %xmm9;
vmovdqu %xmm0, (((0)*8))(%rdi);
vpshufd $0x1b, %xmm0, %xmm0;
vmovdqu %xmm3, (((2)*8))(%rdi);
vmovdqu %xmm4, (((4)*8))(%rdi);
vmovdqu %xmm5, (((6)*8))(%rdi);
vmovdqu %xmm6, (((8)*8))(%rdi);
vmovdqu %xmm7, (((10)*8))(%rdi);
vmovdqu %xmm8, (((12)*8))(%rdi);
vmovdqu %xmm9, (((14)*8))(%rdi);
vmovdqu (((32)*8))(%rdi), %xmm3;
vpandn %xmm15, %xmm10, %xmm13;
vpslldq $12, %xmm13, %xmm13;
vpsrldq $8, %xmm13, %xmm13;
vpxor %xmm13, %xmm15, %xmm15;
vpand %xmm15, %xmm10, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpxor %xmm15, %xmm11, %xmm11;
vpxor %xmm15, %xmm12, %xmm12;
vpshufd $0x4e, %xmm0, %xmm4; vpsrlq $(128-77), %xmm0, %xmm14; vpsllq $(64-(128-77)), %xmm4, %xmm4; vpaddd %xmm14, %xmm4, %xmm4;;
vpshufd $0x4e, %xmm2, %xmm5; vpsrlq $(128-77), %xmm2, %xmm14; vpsllq $(64-(128-77)), %xmm5, %xmm5; vpaddd %xmm14, %xmm5, %xmm5;;
vpshufd $0x4e, %xmm1, %xmm6; vpsrlq $(128-94), %xmm1, %xmm14; vpsllq $(64-(128-94)), %xmm6, %xmm6; vpaddd %xmm14, %xmm6, %xmm6;;
vpshufd $0x4e, %xmm2, %xmm7; vpsrlq $(128-94), %xmm2, %xmm14; vpsllq $(64-(128-94)), %xmm7, %xmm7; vpaddd %xmm14, %xmm7, %xmm7;;
vpshufd $0x4e, %xmm0, %xmm8; vpsrlq $(128-111), %xmm0, %xmm14; vpsllq $(64-(128-111)), %xmm8, %xmm8; vpaddd %xmm14, %xmm8, %xmm8;;
vpshufd $0x4e, %xmm3, %xmm9; vpsrlq $(128-111), %xmm3, %xmm14; vpsllq $(64-(128-111)), %xmm9, %xmm9; vpaddd %xmm14, %xmm9, %xmm9;;
vpxor %xmm15, %xmm4, %xmm4;
vpshufd $0x1b, %xmm10, %xmm10;
vpshufd $0x1b, %xmm11, %xmm11;
vpshufd $0x1b, %xmm12, %xmm12;
vpshufd $0x1b, %xmm4, %xmm4;
vmovdqu %xmm10, (((16)*8))(%rdi);
vmovdqu %xmm11, (((18)*8))(%rdi);
vmovdqu %xmm12, (((20)*8))(%rdi);
vmovdqu %xmm4, (((22)*8))(%rdi);
vpandn %xmm15, %xmm5, %xmm13;
vpslldq $12, %xmm13, %xmm13;
vpsrldq $8, %xmm13, %xmm13;
vpxor %xmm13, %xmm15, %xmm15;
vpand %xmm15, %xmm5, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpxor %xmm15, %xmm6, %xmm6;
vpxor %xmm15, %xmm7, %xmm7;
vpxor %xmm15, %xmm8, %xmm8;
vpslldq $8, %xmm15, %xmm15;
vpxor %xmm15, %xmm9, %xmm9;
vpslldq $8, %xmm9, %xmm15;
vpxor %xmm15, %xmm8, %xmm8;
vpxor %xmm15, %xmm7, %xmm7;
vpxor %xmm15, %xmm6, %xmm6;
vpandn %xmm15, %xmm5, %xmm14;
vpslldq $4, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpand %xmm15, %xmm5, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpshufd $0x1b, %xmm5, %xmm5;
vpshufd $0x1b, %xmm6, %xmm6;
vpshufd $0x1b, %xmm7, %xmm7;
vpshufd $0x1b, %xmm8, %xmm8;
vpshufd $0x1b, %xmm9, %xmm9;
vmovdqu %xmm5, (((24)*8))(%rdi);
vmovdqu %xmm6, (((26)*8))(%rdi);
vmovdqu %xmm7, (((28)*8))(%rdi);
vmovdqu %xmm8, (((30)*8))(%rdi);
vmovdqu %xmm9, (((32)*8))(%rdi);
vpshufd $0x1b, (((22)*8))(%rdi), %xmm0;
vpshufd $0x1b, (((20)*8))(%rdi), %xmm1;
vpshufd $0x1b, (((18)*8))(%rdi), %xmm2;
vpshufd $0x1b, (((16)*8))(%rdi), %xmm3;
vpshufd $0x1b, (((14)*8))(%rdi), %xmm4;
vpshufd $0x1b, (((12)*8))(%rdi), %xmm5;
vpshufd $0x1b, (((10)*8))(%rdi), %xmm6;
vpshufd $0x1b, (((8)*8))(%rdi), %xmm7;
vpxor %xmm15, %xmm0, %xmm0;
vpxor %xmm15, %xmm1, %xmm1;
vpxor %xmm15, %xmm2, %xmm2;
vpandn %xmm15, %xmm3, %xmm14;
vpslldq $4, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpand %xmm15, %xmm3, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpxor %xmm15, %xmm4, %xmm4;
vpxor %xmm15, %xmm5, %xmm5;
vpxor %xmm15, %xmm6, %xmm6;
vpshufd $0x1b, %xmm0, %xmm0;
vpshufd $0x1b, %xmm1, %xmm1;
vpshufd $0x1b, %xmm2, %xmm2;
vpshufd $0x1b, %xmm4, %xmm4;
vpshufd $0x1b, %xmm5, %xmm5;
vpshufd $0x1b, %xmm6, %xmm6;
vmovdqu %xmm0, (((22)*8))(%rdi);
vmovdqu %xmm1, (((20)*8))(%rdi);
vmovdqu %xmm2, (((18)*8))(%rdi);
vmovdqu %xmm4, (((14)*8))(%rdi);
vmovdqu %xmm5, (((12)*8))(%rdi);
vmovdqu %xmm6, (((10)*8))(%rdi);
vpshufd $0x1b, (((6)*8))(%rdi), %xmm6;
vpshufd $0x1b, (((4)*8))(%rdi), %xmm4;
vpshufd $0x1b, (((2)*8))(%rdi), %xmm2;
vpshufd $0x1b, (((0)*8))(%rdi), %xmm0;
vpandn %xmm15, %xmm7, %xmm14;
vpslldq $4, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpand %xmm15, %xmm7, %xmm14;
vpslld $1, %xmm14, %xmm13;
vpsrld $31, %xmm14, %xmm14;
vpaddd %xmm13, %xmm14, %xmm14;
vpsrldq $12, %xmm14, %xmm14;
vpslldq $8, %xmm14, %xmm14;
vpxor %xmm14, %xmm15, %xmm15;
vpxor %xmm15, %xmm6, %xmm6;
vpxor %xmm15, %xmm4, %xmm4;
vpxor %xmm15, %xmm2, %xmm2;
vpxor %xmm15, %xmm0, %xmm0;
vpshufd $0x1b, %xmm6, %xmm6;
vpshufd $0x1b, %xmm4, %xmm4;
vpshufd $0x1b, %xmm2, %xmm2;
vpshufd $0x1b, %xmm0, %xmm0;
vpsrldq $8, %xmm2, %xmm3;
vpsrldq $8, %xmm4, %xmm5;
vpsrldq $8, %xmm6, %xmm7;
vpxor %xmm2, %xmm0, %xmm0;
vpxor %xmm4, %xmm2, %xmm2;
vmovq %xmm0, (((0)*8))(%rdi);
vmovq %xmm3, (((2)*8))(%rdi);
vpxor %xmm5, %xmm3, %xmm3;
vpxor %xmm6, %xmm4, %xmm4;
vpxor %xmm7, %xmm5, %xmm5;
vmovq %xmm2, (((3)*8))(%rdi);
vmovq %xmm3, (((4)*8))(%rdi);
vmovq %xmm4, (((5)*8))(%rdi);
vmovq %xmm5, (((6)*8))(%rdi);
vmovq (((7)*8))(%rdi), %xmm7;
vmovq (((8)*8))(%rdi), %xmm8;
vmovq (((9)*8))(%rdi), %xmm9;
vmovq (((10)*8))(%rdi), %xmm10;
vpandn %xmm10, %xmm8, %xmm15;
vpsrldq $4, %xmm15, %xmm15;
vpxor %xmm15, %xmm10, %xmm0;
vpand %xmm8, %xmm0, %xmm15;
vpslld $1, %xmm15, %xmm14;
vpsrld $31, %xmm15, %xmm15;
vpaddd %xmm14, %xmm15, %xmm15;
vpslldq $12, %xmm15, %xmm15;
vpsrldq $8, %xmm15, %xmm15;
vpxor %xmm15, %xmm0, %xmm0;
vpxor %xmm0, %xmm6, %xmm6;
vmovq %xmm6, (((7)*8))(%rdi);
vmovq (((11)*8))(%rdi), %xmm11;
vmovq (((12)*8))(%rdi), %xmm12;
vmovq (((13)*8))(%rdi), %xmm13;
vmovq (((14)*8))(%rdi), %xmm14;
vmovq (((15)*8))(%rdi), %xmm15;
vpandn %xmm7, %xmm9, %xmm1;
vpsrldq $4, %xmm1, %xmm1;
vpxor %xmm1, %xmm7, %xmm0;
vpand %xmm9, %xmm0, %xmm1;
vpslld $1, %xmm1, %xmm2;
vpsrld $31, %xmm1, %xmm1;
vpaddd %xmm2, %xmm1, %xmm1;
vpslldq $12, %xmm1, %xmm1;
vpsrldq $8, %xmm1, %xmm1;
vpxor %xmm1, %xmm0, %xmm0;
vpxor %xmm11, %xmm0, %xmm0;
vpxor %xmm12, %xmm10, %xmm10;
vpxor %xmm13, %xmm11, %xmm11;
vpxor %xmm14, %xmm12, %xmm12;
vpxor %xmm15, %xmm13, %xmm13;
vmovq %xmm0, (((10)*8))(%rdi);
vmovq %xmm10, (((11)*8))(%rdi);
vmovq %xmm11, (((12)*8))(%rdi);
vmovq %xmm12, (((13)*8))(%rdi);
vmovq %xmm13, (((14)*8))(%rdi);
vmovq (((16)*8))(%rdi), %xmm6;
vmovq (((17)*8))(%rdi), %xmm7;
vmovq (((18)*8))(%rdi), %xmm8;
vmovq (((19)*8))(%rdi), %xmm9;
vmovq (((20)*8))(%rdi), %xmm10;
vpandn %xmm8, %xmm6, %xmm1;
vpsrldq $4, %xmm1, %xmm1;
vpxor %xmm1, %xmm8, %xmm0;
vpand %xmm6, %xmm0, %xmm1;
vpslld $1, %xmm1, %xmm2;
vpsrld $31, %xmm1, %xmm1;
vpaddd %xmm2, %xmm1, %xmm1;
vpslldq $12, %xmm1, %xmm1;
vpsrldq $8, %xmm1, %xmm1;
vpxor %xmm1, %xmm0, %xmm0;
vpxor %xmm14, %xmm0, %xmm0;
vmovq %xmm0, (((15)*8))(%rdi);
vpandn %xmm15, %xmm7, %xmm1;
vpsrldq $4, %xmm1, %xmm1;
vpxor %xmm1, %xmm15, %xmm0;
vpand %xmm7, %xmm0, %xmm1;
vpslld $1, %xmm1, %xmm2;
vpsrld $31, %xmm1, %xmm1;
vpaddd %xmm2, %xmm1, %xmm1;
vpslldq $12, %xmm1, %xmm1;
vpsrldq $8, %xmm1, %xmm1;
vpxor %xmm1, %xmm0, %xmm0;
vmovq (((21)*8))(%rdi), %xmm1;
vmovq (((22)*8))(%rdi), %xmm2;
vmovq (((23)*8))(%rdi), %xmm3;
vmovq (((24)*8))(%rdi), %xmm4;
vpxor %xmm9, %xmm0, %xmm0;
vpxor %xmm10, %xmm8, %xmm8;
vpxor %xmm1, %xmm9, %xmm9;
vpxor %xmm2, %xmm10, %xmm10;
vpxor %xmm3, %xmm1, %xmm1;
vmovq %xmm0, (((18)*8))(%rdi);
vmovq %xmm8, (((19)*8))(%rdi);
vmovq %xmm9, (((20)*8))(%rdi);
vmovq %xmm10, (((21)*8))(%rdi);
vmovq %xmm1, (((22)*8))(%rdi);
vmovq (((25)*8))(%rdi), %xmm5;
vmovq (((26)*8))(%rdi), %xmm6;
vmovq (((27)*8))(%rdi), %xmm7;
vmovq (((28)*8))(%rdi), %xmm8;
vmovq (((29)*8))(%rdi), %xmm9;
vmovq (((30)*8))(%rdi), %xmm10;
vmovq (((31)*8))(%rdi), %xmm11;
vmovq (((32)*8))(%rdi), %xmm12;
vpandn %xmm6, %xmm4, %xmm15;
vpsrldq $4, %xmm15, %xmm15;
vpxor %xmm15, %xmm6, %xmm0;
vpand %xmm4, %xmm0, %xmm15;
vpslld $1, %xmm15, %xmm14;
vpsrld $31, %xmm15, %xmm15;
vpaddd %xmm14, %xmm15, %xmm15;
vpslldq $12, %xmm15, %xmm15;
vpsrldq $8, %xmm15, %xmm15;
vpxor %xmm15, %xmm0, %xmm0;
vpxor %xmm0, %xmm2, %xmm2;
vmovq %xmm2, (((23)*8))(%rdi);
vpandn %xmm3, %xmm5, %xmm15;
vpsrldq $4, %xmm15, %xmm15;
vpxor %xmm15, %xmm3, %xmm0;
vpand %xmm5, %xmm0, %xmm15;
vpslld $1, %xmm15, %xmm14;
vpsrld $31, %xmm15, %xmm15;
vpaddd %xmm14, %xmm15, %xmm15;
vpslldq $12, %xmm15, %xmm15;
vpsrldq $8, %xmm15, %xmm15;
vpxor %xmm15, %xmm0, %xmm0;
vpxor %xmm7, %xmm0, %xmm0;
vpxor %xmm8, %xmm6, %xmm6;
vpxor %xmm9, %xmm7, %xmm7;
vpxor %xmm10, %xmm8, %xmm8;
vpxor %xmm11, %xmm9, %xmm9;
vpxor %xmm12, %xmm11, %xmm11;
vmovq %xmm0, (((26)*8))(%rdi);
vmovq %xmm6, (((27)*8))(%rdi);
vmovq %xmm7, (((28)*8))(%rdi);
vmovq %xmm8, (((29)*8))(%rdi);
vmovq %xmm9, (((30)*8))(%rdi);
vmovq %xmm10, (((31)*8))(%rdi);
vmovq %xmm11, (((32)*8))(%rdi);
movq $0, (((1)*8))(%rdi);
movq $0, (((33)*8))(%rdi);
vzeroupper;
ret;
.ifndef WINABI
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
.endif
+5
View File
@@ -0,0 +1,5 @@
.ifndef WINABI
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
.endif
+339
View File
@@ -0,0 +1,339 @@
/* camellia_asm.S ver 1.1
*
* Copyright © 2012-2013 Jussi Kivilinna <jussi.kivilinna@iki.fi>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/* Adapted to VeraCrypt
- original file pre-processed using "gcc -E"
- added instructions at begining of each functiont to adapt to Windows parameters passing convention
- Fix "'ADDR32' relocation" error when building Windows driver by using lea to load address of tables into
registers instead of using immediat form in xorq. This required saving many registers in the stack in order
to free 7 general purpose registers %r9-%r15 and %xmm0/%xmm1 are used for the 8th table: %xmm0 stores table
address and %xmm1 is used to save/restore %r8 each time it is used for memory addressed by %xmm0.
These changes reduce performance compared to original code by around 8%.
Original code did not have 'ADDR32' relocation issue because it was implemented as an executable, not a shared
library like the case of Windows driver.
*/
.text
.extern camellia_sp10011110;
.extern camellia_sp22000222;
.extern camellia_sp03303033;
.extern camellia_sp00444404;
.extern camellia_sp02220222;
.extern camellia_sp30333033;
.extern camellia_sp44044404;
.extern camellia_sp11101110;
.align 8
.global camellia_encrypt_asm;
.global _camellia_encrypt_asm;
camellia_encrypt_asm:
_camellia_encrypt_asm:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
pushq %r12
pushq %r13
pushq %r14
pushq %r15
leaq camellia_sp10011110(%rip), %r12
leaq camellia_sp22000222(%rip), %r13
leaq camellia_sp03303033(%rip), %r14
leaq camellia_sp00444404(%rip), %r15
leaq camellia_sp02220222(%rip), %r9
leaq camellia_sp30333033(%rip), %r10
leaq camellia_sp44044404(%rip), %r11
leaq camellia_sp11101110(%rip), %rax
movq %rax, %xmm0
pushq %rbp
pushq %rsi
movq %rdx, %rsi;
movq (%rsi), %rax; bswapq %rax; rolq $32, %rax; movq 4*2(%rsi), %rcx; bswapq %rcx; rorq $32, %rcx; xorq 0(%rdi), %rax;;
movq (0 + ((0 + 2) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 3) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((0 + 4) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 5) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((0 + 6) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 7) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl (0 + ((8 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((8 + 1) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
movq (0 + ((8 + 2) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 3) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((8 + 4) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 5) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((8 + 6) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 7) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl (0 + ((16 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((16 + 1) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
movq (0 + ((16 + 2) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 3) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((16 + 4) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 5) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((16 + 6) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 7) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl $24, %ebp;
cmpb $16, 272(%rdi);
je __enc_done;
movl (0 + ((24 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((24 + 1) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
movq (0 + ((24 + 2) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 3) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((24 + 4) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 5) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((24 + 6) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 7) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl $32, %ebp;
__enc_done:
popq %rsi
xorq 0(%rdi, %rbp, 8), %rcx; rorq $32, %rcx; bswapq %rcx; movq %rcx, (%rsi); rolq $32, %rax; bswapq %rax; movq %rax, 4*2(%rsi);;
popq %rbp
popq %r15
popq %r14
popq %r13
popq %r12
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.align 8
.global camellia_decrypt_asm;
.global _camellia_decrypt_asm;
camellia_decrypt_asm:
_camellia_decrypt_asm:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
pushq %r12
pushq %r13
pushq %r14
pushq %r15
cmpl $16, 272(%rdi);
movl $32, %r8d;
movl $24, %r9d;
cmovel %r9d, %r8d;
leaq camellia_sp10011110(%rip), %r12
leaq camellia_sp22000222(%rip), %r13
leaq camellia_sp03303033(%rip), %r14
leaq camellia_sp00444404(%rip), %r15
leaq camellia_sp02220222(%rip), %r9
leaq camellia_sp30333033(%rip), %r10
leaq camellia_sp44044404(%rip), %r11
leaq camellia_sp11101110(%rip), %rax
movq %rax, %xmm0
pushq %rbp
pushq %rsi
movq %rdx, %rsi;
movq (%rsi), %rax; bswapq %rax; rolq $32, %rax; movq 4*2(%rsi), %rcx; bswapq %rcx; rorq $32, %rcx; xorq 0(%rdi, %r8, 8), %rax;;
cmpb $24, %r8b;
je __dec_rounds16;
movq (0 + ((24 + 7) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 6) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((24 + 5) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 4) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((24 + 3) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((24 + 2) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl (0 + ((24 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((24 + 0) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
__dec_rounds16:
movq (0 + ((16 + 7) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 6) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((16 + 5) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 4) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((16 + 3) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((16 + 2) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl (0 + ((16 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((16 + 0) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
movq (0 + ((8 + 7) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 6) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((8 + 5) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 4) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((8 + 3) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((8 + 2) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
movl (0 + ((8 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %r8; orq %rax, %r8; shrq $32, %r8; xorq %r8, %rax; movl (0 + ((8 + 0) * 2) * 4)(%rdi), %esi; andl %ecx, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rcx;;;
movq (0 + ((0 + 7) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 6) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((0 + 5) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 4) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;; movq (0 + ((0 + 3) * 2) * 4)(%rdi), %r8; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rcx;;; movq (0 + ((0 + 2) * 2) * 4)(%rdi), %r8; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; xorq %r8, %rax;;;;
popq %rsi
xorq 0(%rdi), %rcx; rorq $32, %rcx; bswapq %rcx; movq %rcx, (%rsi); rolq $32, %rax; bswapq %rax; movq %rax, 4*2(%rsi);;
popq %rbp
popq %r15
popq %r14
popq %r13
popq %r12
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.align 8
.global camellia_enc_blk2
.global _camellia_enc_blk2
camellia_enc_blk2:
_camellia_enc_blk2:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
pushq %r12
pushq %r13
pushq %r14
pushq %r15
leaq camellia_sp10011110(%rip), %r12
leaq camellia_sp22000222(%rip), %r13
leaq camellia_sp03303033(%rip), %r14
leaq camellia_sp00444404(%rip), %r15
leaq camellia_sp02220222(%rip), %r9
leaq camellia_sp30333033(%rip), %r10
leaq camellia_sp44044404(%rip), %r11
leaq camellia_sp11101110(%rip), %rax
movq %rax, %xmm0
pushq %rbx;
pushq %rbp
pushq %rsi
movq %rdx, %rsi;
movq (%rsi), %rax; bswapq %rax; rorq $32, %rax; movq 4*2(%rsi), %rcx; bswapq %rcx; rolq $32, %rcx; xorq 0(%rdi), %rax; movq 8*2(%rsi), %rbx; bswapq %rbx; rorq $32, %rbx; movq 12*2(%rsi), %rdx; bswapq %rdx; rolq $32, %rdx; xorq 0(%rdi), %rbx;;
movq (0 + ((0 + 2) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((0 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((0 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((0 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((0 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, Line truncated
movl (0 + ((8 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((8 + 0) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((8 + 1) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((8 + 1) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
movq (0 + ((8 + 2) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((8 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((8 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((8 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((8 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, Line truncated
movl (0 + ((16 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((16 + 0) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((16 + 1) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((16 + 1) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
movq (0 + ((16 + 2) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((16 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((16 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((16 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((16 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq Line truncated
movl $24, %r8d;
cmpb $16, 272(%rdi);
je __enc2_done;
movl (0 + ((24 + 0) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((24 + 0) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((24 + 1) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((24 + 1) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
movq (0 + ((24 + 2) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((24 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((24 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((24 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((24 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq Line truncated
movl $32, %r8d;
__enc2_done:
popq %rsi
xorq 0(%rdi, %r8, 8), %rcx; rolq $32, %rcx; bswapq %rcx; movq %rcx, (%rsi); rorq $32, %rax; bswapq %rax; movq %rax, 4*2(%rsi); xorq 0(%rdi, %r8, 8), %rdx; rolq $32, %rdx; bswapq %rdx; movq %rdx, 8*2(%rsi); rorq $32, %rbx; bswapq %rbx; movq %rbx, 12*2(%rsi);;
popq %rbp
popq %rbx;
popq %r15
popq %r14
popq %r13
popq %r12
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.align 8
.global camellia_dec_blk2
.global _camellia_dec_blk2
camellia_dec_blk2:
_camellia_dec_blk2:
.ifdef WINABI
pushq %rsi
pushq %rdi
movq %rcx, %rdi;
movq %rdx, %rsi;
movq %r8, %rdx;
.endif
pushq %r12
pushq %r13
pushq %r14
pushq %r15
cmpl $16, 272(%rdi);
movl $32, %r8d;
movl $24, %r9d;
cmovel %r9d, %r8d;
leaq camellia_sp10011110(%rip), %r12
leaq camellia_sp22000222(%rip), %r13
leaq camellia_sp03303033(%rip), %r14
leaq camellia_sp00444404(%rip), %r15
leaq camellia_sp02220222(%rip), %r9
leaq camellia_sp30333033(%rip), %r10
leaq camellia_sp44044404(%rip), %r11
leaq camellia_sp11101110(%rip), %rax
movq %rax, %xmm0
pushq %rbx
pushq %rbp
pushq %rsi
movq %rdx, %rsi;
movq (%rsi), %rax; bswapq %rax; rorq $32, %rax; movq 4*2(%rsi), %rcx; bswapq %rcx; rolq $32, %rcx; xorq 0(%rdi, %r8, 8), %rax; movq 8*2(%rsi), %rbx; bswapq %rbx; rorq $32, %rbx; movq 12*2(%rsi), %rdx; bswapq %rdx; rolq $32, %rdx; xorq 0(%rdi, %r8, 8), %rbx;;
cmpb $24, %r8b;
je __dec2_rounds16;
movq (0 + ((24 + 7) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((24 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((24 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((24 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((24 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq Line truncated
movl (0 + ((24 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((24 + 1) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((24 + 0) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((24 + 0) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((24 + 1) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((24 + 0) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
__dec2_rounds16:
movq (0 + ((16 + 7) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((16 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((16 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((16 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((16 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq Line truncated
movl (0 + ((16 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((16 + 1) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((16 + 0) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((16 + 0) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((16 + 1) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((16 + 0) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
movq (0 + ((8 + 7) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((8 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((8 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((8 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((8 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, Line truncated
movl (0 + ((8 + 1) * 2) * 4)(%rdi), %esi; andl %eax, %esi; roll $1, %esi; shlq $32, %rsi; xorq %rsi, %rax; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %rbp; orq %rcx, %rbp; shrq $32, %rbp; xorq %rbp, %rcx; movl (0 + ((8 + 1) * 2) * 4)(%rdi), %r8d; andl %ebx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rbx; movq (0 + ((8 + 0) * 2) * 4)(%rdi), %rsi; orq %rdx, %rsi; shrq $32, %rsi; xorq %rsi, %rdx; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %rbp; orq %rax, %rbp; shrq $32, %rbp; xorq %rbp, %rax; movl (0 + ((8 + 0) * 2) * 4)(%rdi), %r8d; andl %ecx, %r8d; roll $1, %r8d; shlq $32, %r8; xorq %r8, %rcx; movq (0 + ((8 + 1) * 2) * 4)(%rdi), %rsi; orq %rbx, %rsi; shrq $32, %rsi; xorq %rsi, %rbx; movl (0 + ((8 + 0) * 2) * 4)(%rdi), %ebp; andl %edx, %ebp; roll $1, %ebp; shlq $32, %rbp; xorq %rbp, %rdx;;;
movq (0 + ((0 + 7) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((0 + 6) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((0 + 5) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rdx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r10, %rbp, 8), %rdx; xorq (%r9, %rsi, 8), %rdx;;;; movq (0 + ((0 + 4) * 2) * 4)(%rdi), %r8; xorq %r8, %rbx; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r15, %rbp, 8), %rax; xorq (%r14, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rax; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rax;; movzbl %cl, %ebp; movzbl %ch, %esi; rorq $16, %rcx; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r15, %rbp, 8), %rbx; xorq (%r14, %rsi, 8), %rbx;; xorq %r8, %rax; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r13, %rbp, 8), %rbx; xorq (%r12, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rbx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rbx;; movzbl %dl, %ebp; movzbl %dh, %esi; rorq $16, %rdx; xorq (%r10, %rbp, 8), %rbx; xorq (%r9, %rsi, 8), %rbx;;;; movq (0 + ((0 + 3) * 2) * 4)(%rdi), %r8; xorq %r8, %rdx; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r15, %rbp, 8), %rcx; xorq (%r14, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r13, %rbp, 8), %r8; xorq (%r12, %rsi, 8), %r8;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; movq %r8, %xmm1; movq %xmm0, %r8; xorq (%r8, %rbp, 8), %rcx; movq %xmm1, %r8; xorq (%r11, %rsi, 8), %rcx;; movzbl %al, %ebp; movzbl %ah, %esi; rorq $16, %rax; xorq (%r10, %rbp, 8), %r8; xorq (%r9, %rsi, 8), %r8;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r15, %rbp, 8), %rdx; xorq (%r14, %rsi, 8), %rdx;; xorq %r8, %rcx; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; xorq (%r13, %rbp, 8), %rdx; xorq (%r12, %rsi, 8), %rdx;; movzbl %bl, %ebp; movzbl %bh, %esi; rorq $16, %rbx; movq %r8, Line truncated
popq %rsi
xorq 0(%rdi), %rcx; rolq $32, %rcx; bswapq %rcx; movq %rcx, (%rsi); rorq $32, %rax; bswapq %rax; movq %rax, 4*2(%rsi); xorq 0(%rdi), %rdx; rolq $32, %rdx; bswapq %rdx; movq %rdx, 8*2(%rsi); rorq $32, %rbx; bswapq %rbx; movq %rbx, 12*2(%rsi);;
popq %rbp
popq %rbx;
popq %r15
popq %r14
popq %r13
popq %r12
.ifdef WINABI
popq %rdi
popq %rsi
.endif
ret;
.ifndef WINABI
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
.endif
+5
View File
@@ -0,0 +1,5 @@
.ifndef WINABI
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
.endif
+20
View File
@@ -264,6 +264,26 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TargetDir)\%(Filename).obj;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="Camellia_aesni_x64.S">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">echo %(Filename)%(Extension) &amp; yasm.exe -p gas -D WINABI -f win64 -o "$(TargetDir)\%(Filename).obj" -l "$(TargetDir)\%(Filename).lst" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TargetDir)\%(Filename).obj;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TargetDir)\%(Filename).obj;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">echo %(Filename)%(Extension) &amp; yasm.exe -p gas -D WINABI -f win64 -o "$(TargetDir)\%(Filename).obj" -l "$(TargetDir)\%(Filename).lst" "%(FullPath)"</Command>
</CustomBuild>
<CustomBuild Include="Camellia_x64.S">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">echo %(Filename)%(Extension) &amp; yasm.exe -p gas -D WINABI -f win64 -o "$(TargetDir)\%(Filename).obj" -l "$(TargetDir)\%(Filename).lst" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TargetDir)\%(Filename).obj;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">echo %(Filename)%(Extension) &amp; yasm.exe -p gas -D WINABI -f win64 -o "$(TargetDir)\%(Filename).obj" -l "$(TargetDir)\%(Filename).lst" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TargetDir)\%(Filename).obj;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
+9 -3
View File
@@ -21,9 +21,6 @@
<ClCompile Include="Aestab.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Camellia.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cpu.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -54,6 +51,9 @@
<ClCompile Include="SerpentFast_simd.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Camellia.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Aes.h">
@@ -124,5 +124,11 @@
<CustomBuild Include="Twofish_x64.S">
<Filter>Source Files</Filter>
</CustomBuild>
<CustomBuild Include="Camellia_x64.S">
<Filter>Source Files</Filter>
</CustomBuild>
<CustomBuild Include="Camellia_aesni_x64.S">
<Filter>Source Files</Filter>
</CustomBuild>
</ItemGroup>
</Project>
+7
View File
@@ -22,3 +22,10 @@ TC_ASM_ERR_LOG = ..\Driver\build_errors_asm.log
"$(OBJ_PATH)\$(O)\Twofish_$(TC_ARCH).obj": Twofish_$(TC_ARCH).S
yasm.exe $(VC_YASMFLAGS) -o "$@" -l "$(OBJ_PATH)\$(O)\Twofish_$(TC_ARCH).lst" Twofish_$(TC_ARCH).S 2>$(TC_ASM_ERR_LOG)
"$(OBJ_PATH)\$(O)\Camellia_$(TC_ARCH).obj": Camellia_$(TC_ARCH).S
yasm.exe $(VC_YASMFLAGS) -o "$@" -l "$(OBJ_PATH)\$(O)\Camellia_$(TC_ARCH).lst" Camellia_$(TC_ARCH).S 2>$(TC_ASM_ERR_LOG)
"$(OBJ_PATH)\$(O)\Camellia_aesni_$(TC_ARCH).obj": Camellia_aesni_$(TC_ARCH).S
yasm.exe $(VC_YASMFLAGS) -o "$@" -l "$(OBJ_PATH)\$(O)\Camellia_aesni_$(TC_ARCH).lst" Camellia_aesni_$(TC_ARCH).S 2>$(TC_ASM_ERR_LOG)
+7 -2
View File
@@ -7,7 +7,9 @@ NTTARGETFILES = \
"$(OBJ_PATH)\$(O)\Aes_$(TC_ARCH).obj" \
"$(OBJ_PATH)\$(O)\Aes_hw_cpu.obj" \
"$(OBJ_PATH)\$(O)\gost89_$(TC_ARCH).obj" \
"$(OBJ_PATH)\$(O)\Twofish_$(TC_ARCH).obj"
"$(OBJ_PATH)\$(O)\Twofish_$(TC_ARCH).obj" \
"$(OBJ_PATH)\$(O)\Camellia_$(TC_ARCH).obj" \
"$(OBJ_PATH)\$(O)\Camellia_aesni_$(TC_ARCH).obj"
SOURCES = \
Aes_$(TC_ARCH).asm \
@@ -26,4 +28,7 @@ SOURCES = \
Streebog.c \
kuznyechik.c \
Whirlpool.c \
Camellia.c
Camellia.c \
Camellia_$(TC_ARCH).S \
Camellia_aesni_$(TC_ARCH).S
+3 -1
View File
@@ -189,7 +189,7 @@ static int TrySSE2()
int g_x86DetectionDone = 0;
int g_hasISSE = 0, g_hasSSE2 = 0, g_hasSSSE3 = 0, g_hasMMX = 0, g_hasAESNI = 0, g_hasCLMUL = 0, g_isP4 = 0;
int g_hasAVX = 0, g_hasAVX2 = 0, g_hasBMI2 = 0, g_hasSSE42 = 0, g_hasSSE41 = 0;
int g_hasAVX = 0, g_hasAVX2 = 0, g_hasBMI2 = 0, g_hasSSE42 = 0, g_hasSSE41 = 0, g_isIntel = 0, g_isAMD = 0;
uint32 g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
VC_INLINE int IsIntel(const uint32 output[4])
@@ -325,11 +325,13 @@ void DetectX86Features()
if (IsIntel(cpuid))
{
g_isIntel = 1;
g_isP4 = ((cpuid1[0] >> 8) & 0xf) == 0xf;
g_cacheLineSize = 8 * GETBYTE(cpuid1[1], 1);
}
else if (IsAMD(cpuid))
{
g_isAMD = 1;
CpuId(0x80000005, cpuid);
g_cacheLineSize = GETBYTE(cpuid[2], 0);
}
+4
View File
@@ -196,6 +196,8 @@ extern int g_hasSSSE3;
extern int g_hasAESNI;
extern int g_hasCLMUL;
extern int g_isP4;
extern int g_isIntel;
extern int g_isAMD;
extern uint32 g_cacheLineSize;
void DetectX86Features(); // must be called at the start of the program/driver
int CpuId(uint32 input, uint32 *output);
@@ -225,6 +227,8 @@ extern int g_hasMMX;
#define HasAESNI() g_hasAESNI
#define HasCLMUL() g_hasCLMUL
#define IsP4() g_isP4
#define IsCpuIntel() g_isIntel
#define IsCpuAMD() g_isAMD
#define GetCacheLineSize() g_cacheLineSize
#if defined(__cplusplus)
+3
View File
@@ -223,6 +223,9 @@ BuildDriver.cmd -rebuild -debug -x64 "$(SolutionDir)\Common" "$(SolutionDir)\Cry
<None Include="..\Crypto\Aes_hw_cpu.asm" />
<None Include="..\Crypto\Aes_x64.asm" />
<None Include="..\Crypto\Aes_x86.asm" />
<None Include="..\Crypto\Camellia_aesni_x64.S" />
<None Include="..\Crypto\Camellia_x64.S" />
<None Include="..\Crypto\Twofish_x64.S" />
<None Include="BuildDriver.cmd" />
<None Include="Makefile" />
<None Include="Sources" />
+9
View File
@@ -143,6 +143,15 @@
<None Include="..\Crypto\Sources">
<Filter>Build Files\Crypto</Filter>
</None>
<None Include="..\Crypto\Camellia_aesni_x64.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\Camellia_x64.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\Twofish_x64.S">
<Filter>Source Files\Crypto</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Common\Apidrvr.h">
+50
View File
@@ -24,6 +24,23 @@
#endif
#include "Crypto/cpu.h"
extern "C" int IsAesHwCpuSupported ()
{
#ifdef TC_AES_HW_CPU
static bool state = false;
static bool stateValid = false;
if (!stateValid)
{
state = g_hasAESNI ? true : false;
stateValid = true;
}
return state && Cipher::IsHwSupportEnabled();
#else
return false;
#endif
}
namespace VeraCrypt
{
Cipher::Cipher () : Initialized (false)
@@ -349,6 +366,39 @@ namespace VeraCrypt
{
camellia_set_key (key, ScheduledKey.Ptr());
}
void CipherCamellia::EncryptBlocks (byte *data, size_t blockCount) const
{
if (!Initialized)
throw NotInitialized (SRC_POS);
#if CRYPTOPP_BOOL_X64
camellia_encrypt_blocks ( ScheduledKey.Ptr(), data, data, blockCount);
#else
Cipher::EncryptBlocks (data, blockCount);
#endif
}
void CipherCamellia::DecryptBlocks (byte *data, size_t blockCount) const
{
if (!Initialized)
throw NotInitialized (SRC_POS);
#if CRYPTOPP_BOOL_X64
camellia_decrypt_blocks ( ScheduledKey.Ptr(), data, data, blockCount);
#else
Cipher::DecryptBlocks (data, blockCount);
#endif
}
bool CipherCamellia::IsHwSupportAvailable () const
{
#if CRYPTOPP_BOOL_X64
return true;
#else
return false;
#endif
}
// GOST89
void CipherGost89::Decrypt (byte *data) const
+1 -1
View File
@@ -103,11 +103,11 @@ namespace VeraCrypt
TC_CIPHER (AES, 16, 32);
TC_CIPHER (Serpent, 16, 32);
TC_CIPHER (Twofish, 16, 32);
TC_CIPHER (Camellia, 16, 32);
#undef TC_CIPHER_ADD_METHODS
#define TC_CIPHER_ADD_METHODS
TC_CIPHER (Camellia, 16, 32);
TC_CIPHER (Gost89, 16, 32);
TC_CIPHER (Gost89StaticSBOX, 16, 32);
TC_CIPHER (Kuznyechik, 16, 32);
+10
View File
@@ -34,6 +34,8 @@ ifeq "$(PLATFORM)" "MacOSX"
OBJS += ../Crypto/Aes_hw_cpu.o
OBJS += ../Crypto/Aescrypt.o
OBJSEX += ../Crypto/Twofish_asm.oo
OBJSEX += ../Crypto/Camellia_asm.oo
OBJSEX += ../Crypto/Camellia_aesni_asm.oo
else ifeq "$(CPU_ARCH)" "x86"
OBJS += ../Crypto/Aes_x86.o
OBJS += ../Crypto/Aes_hw_cpu.o
@@ -41,6 +43,8 @@ else ifeq "$(CPU_ARCH)" "x64"
OBJS += ../Crypto/Aes_x64.o
OBJS += ../Crypto/Aes_hw_cpu.o
OBJS += ../Crypto/Twofish_x64.o
OBJS += ../Crypto/Camellia_x64.o
OBJS += ../Crypto/Camellia_aesni_x64.o
else
OBJS += ../Crypto/Aescrypt.o
endif
@@ -77,6 +81,12 @@ ifeq "$(PLATFORM)" "MacOSX"
../Crypto/Twofish_asm.oo: ../Crypto/Twofish_x64.S
@echo Assembling $(<F)
$(YASM) -p gas -f macho64 -o ../Crypto/Twofish_asm.oo ../Crypto/Twofish_x64.S
../Crypto/Camellia_asm.oo: ../Crypto/Camellia_x64.S
@echo Assembling $(<F)
$(YASM) -p gas -f macho64 -o ../Crypto/Camellia_asm.oo ../Crypto/Camellia_x64.S
../Crypto/Camellia_aesni_asm.oo: ../Crypto/Camellia_aesni_x64.S
@echo Assembling $(<F)
$(YASM) -p gas -f macho64 -o ../Crypto/Camellia_aesni_asm.oo ../Crypto/Camellia_aesni_x64.S
endif
include $(BUILD_INC)/Makefile.inc