/* wc_mlkem_asm.S */
/*
* Copyright (C) 2006-2026 wolfSSL Inc.
*
* This file is part of wolfSSL.
*
* wolfSSL is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* wolfSSL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
*/
#ifdef WOLFSSL_USER_SETTINGS
#ifdef WOLFSSL_USER_SETTINGS_ASM
/*
* user_settings_asm.h is a file generated by the script user_settings_asm.sh.
* The script takes in a user_settings.h and produces user_settings_asm.h, which
* is a stripped down version of user_settings.h containing only preprocessor
* directives. This makes the header safe to include in assembly (.S) files.
*/
#include "user_settings_asm.h"
#else
/*
* Note: if user_settings.h contains any C code (e.g. a typedef or function
* prototype), including it here in an assembly (.S) file will cause an
* assembler failure. See user_settings_asm.h above.
*/
#include "user_settings.h"
#endif /* WOLFSSL_USER_SETTINGS_ASM */
#endif /* WOLFSSL_USER_SETTINGS */
#ifndef HAVE_INTEL_AVX1
#define HAVE_INTEL_AVX1
#endif /* HAVE_INTEL_AVX1 */
#ifndef NO_AVX2_SUPPORT
#ifndef HAVE_INTEL_AVX2
#define HAVE_INTEL_AVX2
#endif /* HAVE_INTEL_AVX2 */
#endif /* NO_AVX2_SUPPORT */
#ifdef WOLFSSL_WC_MLKEM
#ifdef HAVE_INTEL_AVX2
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
mlkem_q:
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
mlkem_qinv:
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
.value 0xf301,0xf301
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
mlkem_f:
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
.value 0x0549,0x0549
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
mlkem_f_qinv:
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
.value 0x5049,0x5049
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
mlkem_v:
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_avx2_zetas:
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x0a0b,0x0a0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x7b0b,0x7b0b
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x0b9a,0x0b9a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x399a,0x399a
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x05d5,0x05d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x34d5,0x34d5
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0x058e,0x058e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0xcf8e,0xcf8e
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0x0c56,0x0c56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0xae56,0xae56
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x026e,0x026e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x6c6e,0x6c6e
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0x0629,0x0629
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0xf129,0xf129
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0x00b6,0x00b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0xc2b6,0xc2b6
.value 0x023d,0x023d
.value 0x023d,0x023d
.value 0x023d,0x023d
.value 0x023d,0x023d
.value 0x07d4,0x07d4
.value 0x07d4,0x07d4
.value 0x07d4,0x07d4
.value 0x07d4,0x07d4
.value 0xe93d,0xe93d
.value 0xe93d,0xe93d
.value 0xe93d,0xe93d
.value 0xe93d,0xe93d
.value 0x43d4,0x43d4
.value 0x43d4,0x43d4
.value 0x43d4,0x43d4
.value 0x43d4,0x43d4
.value 0x0108,0x0108
.value 0x0108,0x0108
.value 0x0108,0x0108
.value 0x0108,0x0108
.value 0x017f,0x017f
.value 0x017f,0x017f
.value 0x017f,0x017f
.value 0x017f,0x017f
.value 0x9908,0x9908
.value 0x9908,0x9908
.value 0x9908,0x9908
.value 0x9908,0x9908
.value 0x8e7f,0x8e7f
.value 0x8e7f,0x8e7f
.value 0x8e7f,0x8e7f
.value 0x8e7f,0x8e7f
.value 0x04c7,0x04c7
.value 0x04c7,0x04c7
.value 0x028c,0x028c
.value 0x028c,0x028c
.value 0x0ad9,0x0ad9
.value 0x0ad9,0x0ad9
.value 0x03f7,0x03f7
.value 0x03f7,0x03f7
.value 0xe9c7,0xe9c7
.value 0xe9c7,0xe9c7
.value 0xe68c,0xe68c
.value 0xe68c,0xe68c
.value 0x05d9,0x05d9
.value 0x05d9,0x05d9
.value 0x78f7,0x78f7
.value 0x78f7,0x78f7
.value 0x07f4,0x07f4
.value 0x07f4,0x07f4
.value 0x05d3,0x05d3
.value 0x05d3,0x05d3
.value 0x0be7,0x0be7
.value 0x0be7,0x0be7
.value 0x06f9,0x06f9
.value 0x06f9,0x06f9
.value 0xa3f4,0xa3f4
.value 0xa3f4,0xa3f4
.value 0x4ed3,0x4ed3
.value 0x4ed3,0x4ed3
.value 0x50e7,0x50e7
.value 0x50e7,0x50e7
.value 0x61f9,0x61f9
.value 0x61f9,0x61f9
.value 0x09c4,0x09c4
.value 0x09c4,0x09c4
.value 0x09c4,0x09c4
.value 0x09c4,0x09c4
.value 0x05b2,0x05b2
.value 0x05b2,0x05b2
.value 0x05b2,0x05b2
.value 0x05b2,0x05b2
.value 0x15c4,0x15c4
.value 0x15c4,0x15c4
.value 0x15c4,0x15c4
.value 0x15c4,0x15c4
.value 0xfbb2,0xfbb2
.value 0xfbb2,0xfbb2
.value 0xfbb2,0xfbb2
.value 0xfbb2,0xfbb2
.value 0x06bf,0x06bf
.value 0x06bf,0x06bf
.value 0x06bf,0x06bf
.value 0x06bf,0x06bf
.value 0x0c7f,0x0c7f
.value 0x0c7f,0x0c7f
.value 0x0c7f,0x0c7f
.value 0x0c7f,0x0c7f
.value 0x53bf,0x53bf
.value 0x53bf,0x53bf
.value 0x53bf,0x53bf
.value 0x53bf,0x53bf
.value 0x997f,0x997f
.value 0x997f,0x997f
.value 0x997f,0x997f
.value 0x997f,0x997f
.value 0x0204,0x0204
.value 0x0204,0x0204
.value 0x0cf9,0x0cf9
.value 0x0cf9,0x0cf9
.value 0x0bc1,0x0bc1
.value 0x0bc1,0x0bc1
.value 0x0a67,0x0a67
.value 0x0a67,0x0a67
.value 0xce04,0xce04
.value 0xce04,0xce04
.value 0x67f9,0x67f9
.value 0x67f9,0x67f9
.value 0x3ec1,0x3ec1
.value 0x3ec1,0x3ec1
.value 0xcf67,0xcf67
.value 0xcf67,0xcf67
.value 0x06af,0x06af
.value 0x06af,0x06af
.value 0x0877,0x0877
.value 0x0877,0x0877
.value 0x007e,0x007e
.value 0x007e,0x007e
.value 0x05bd,0x05bd
.value 0x05bd,0x05bd
.value 0x23af,0x23af
.value 0x23af,0x23af
.value 0xfd77,0xfd77
.value 0xfd77,0xfd77
.value 0x9a7e,0x9a7e
.value 0x9a7e,0x9a7e
.value 0x6cbd,0x6cbd
.value 0x6cbd,0x6cbd
.value 0x08b2,0x08b2
.value 0x01ae,0x01ae
.value 0x022b,0x022b
.value 0x034b,0x034b
.value 0x081e,0x081e
.value 0x0367,0x0367
.value 0x060e,0x060e
.value 0x0069,0x0069
.value 0xfeb2,0xfeb2
.value 0x2bae,0x2bae
.value 0xd32b,0xd32b
.value 0x344b,0x344b
.value 0x821e,0x821e
.value 0xc867,0xc867
.value 0x500e,0x500e
.value 0xab69,0xab69
.value 0x01a6,0x01a6
.value 0x024b,0x024b
.value 0x00b1,0x00b1
.value 0x0c16,0x0c16
.value 0x0bde,0x0bde
.value 0x0b35,0x0b35
.value 0x0626,0x0626
.value 0x0675,0x0675
.value 0x93a6,0x93a6
.value 0x334b,0x334b
.value 0x03b1,0x03b1
.value 0xee16,0xee16
.value 0xc5de,0xc5de
.value 0x5a35,0x5a35
.value 0x1826,0x1826
.value 0x1575,0x1575
.value 0x0c0b,0x0c0b
.value 0x030a,0x030a
.value 0x0487,0x0487
.value 0x0c6e,0x0c6e
.value 0x09f8,0x09f8
.value 0x05cb,0x05cb
.value 0x0aa7,0x0aa7
.value 0x045f,0x045f
.value 0x7d0b,0x7d0b
.value 0x810a,0x810a
.value 0x2987,0x2987
.value 0x766e,0x766e
.value 0x71f8,0x71f8
.value 0xb6cb,0xb6cb
.value 0x8fa7,0x8fa7
.value 0x315f,0x315f
.value 0x06cb,0x06cb
.value 0x0284,0x0284
.value 0x0999,0x0999
.value 0x015d,0x015d
.value 0x01a2,0x01a2
.value 0x0149,0x0149
.value 0x0c65,0x0c65
.value 0x0cb6,0x0cb6
.value 0xb7cb,0xb7cb
.value 0x4e84,0x4e84
.value 0x4499,0x4499
.value 0x485d,0x485d
.value 0xc7a2,0xc7a2
.value 0x4c49,0x4c49
.value 0xeb65,0xeb65
.value 0xceb6,0xceb6
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0714,0x0714
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x0314,0x0314
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x011f,0x011f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x6e1f,0x6e1f
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0x00ca,0x00ca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0xbeca,0xbeca
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x03c2,0x03c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x29c2,0x29c2
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x084f,0x084f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x054f,0x054f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0x073f,0x073f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0xd43f,0xd43f
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x05bc,0x05bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x79bc,0x79bc
.value 0x0a58,0x0a58
.value 0x0a58,0x0a58
.value 0x0a58,0x0a58
.value 0x0a58,0x0a58
.value 0x03f9,0x03f9
.value 0x03f9,0x03f9
.value 0x03f9,0x03f9
.value 0x03f9,0x03f9
.value 0x9258,0x9258
.value 0x9258,0x9258
.value 0x9258,0x9258
.value 0x9258,0x9258
.value 0x5ef9,0x5ef9
.value 0x5ef9,0x5ef9
.value 0x5ef9,0x5ef9
.value 0x5ef9,0x5ef9
.value 0x02dc,0x02dc
.value 0x02dc,0x02dc
.value 0x02dc,0x02dc
.value 0x02dc,0x02dc
.value 0x0260,0x0260
.value 0x0260,0x0260
.value 0x0260,0x0260
.value 0x0260,0x0260
.value 0xd6dc,0xd6dc
.value 0xd6dc,0xd6dc
.value 0xd6dc,0xd6dc
.value 0xd6dc,0xd6dc
.value 0x2260,0x2260
.value 0x2260,0x2260
.value 0x2260,0x2260
.value 0x2260,0x2260
.value 0x09ac,0x09ac
.value 0x09ac,0x09ac
.value 0x0ca7,0x0ca7
.value 0x0ca7,0x0ca7
.value 0x0bf2,0x0bf2
.value 0x0bf2,0x0bf2
.value 0x033e,0x033e
.value 0x033e,0x033e
.value 0x4dac,0x4dac
.value 0x4dac,0x4dac
.value 0x91a7,0x91a7
.value 0x91a7,0x91a7
.value 0xc1f2,0xc1f2
.value 0xc1f2,0xc1f2
.value 0xdd3e,0xdd3e
.value 0xdd3e,0xdd3e
.value 0x006b,0x006b
.value 0x006b,0x006b
.value 0x0774,0x0774
.value 0x0774,0x0774
.value 0x0c0a,0x0c0a
.value 0x0c0a,0x0c0a
.value 0x094a,0x094a
.value 0x094a,0x094a
.value 0x916b,0x916b
.value 0x916b,0x916b
.value 0x2374,0x2374
.value 0x2374,0x2374
.value 0x8a0a,0x8a0a
.value 0x8a0a,0x8a0a
.value 0x474a,0x474a
.value 0x474a,0x474a
.value 0x06fb,0x06fb
.value 0x06fb,0x06fb
.value 0x06fb,0x06fb
.value 0x06fb,0x06fb
.value 0x019b,0x019b
.value 0x019b,0x019b
.value 0x019b,0x019b
.value 0x019b,0x019b
.value 0x47fb,0x47fb
.value 0x47fb,0x47fb
.value 0x47fb,0x47fb
.value 0x47fb,0x47fb
.value 0x229b,0x229b
.value 0x229b,0x229b
.value 0x229b,0x229b
.value 0x229b,0x229b
.value 0x0c34,0x0c34
.value 0x0c34,0x0c34
.value 0x0c34,0x0c34
.value 0x0c34,0x0c34
.value 0x06de,0x06de
.value 0x06de,0x06de
.value 0x06de,0x06de
.value 0x06de,0x06de
.value 0x6834,0x6834
.value 0x6834,0x6834
.value 0x6834,0x6834
.value 0x6834,0x6834
.value 0xc0de,0xc0de
.value 0xc0de,0xc0de
.value 0xc0de,0xc0de
.value 0xc0de,0xc0de
.value 0x0b73,0x0b73
.value 0x0b73,0x0b73
.value 0x03c1,0x03c1
.value 0x03c1,0x03c1
.value 0x071d,0x071d
.value 0x071d,0x071d
.value 0x0a2c,0x0a2c
.value 0x0a2c,0x0a2c
.value 0x3473,0x3473
.value 0x3473,0x3473
.value 0x36c1,0x36c1
.value 0x36c1,0x36c1
.value 0x8e1d,0x8e1d
.value 0x8e1d,0x8e1d
.value 0xce2c,0xce2c
.value 0xce2c,0xce2c
.value 0x01c0,0x01c0
.value 0x01c0,0x01c0
.value 0x08d8,0x08d8
.value 0x08d8,0x08d8
.value 0x02a5,0x02a5
.value 0x02a5,0x02a5
.value 0x0806,0x0806
.value 0x0806,0x0806
.value 0x41c0,0x41c0
.value 0x41c0,0x41c0
.value 0x10d8,0x10d8
.value 0x10d8,0x10d8
.value 0xa1a5,0xa1a5
.value 0xa1a5,0xa1a5
.value 0xba06,0xba06
.value 0xba06,0xba06
.value 0x0331,0x0331
.value 0x0449,0x0449
.value 0x025b,0x025b
.value 0x0262,0x0262
.value 0x052a,0x052a
.value 0x07fc,0x07fc
.value 0x0748,0x0748
.value 0x0180,0x0180
.value 0x8631,0x8631
.value 0x4f49,0x4f49
.value 0x635b,0x635b
.value 0x0862,0x0862
.value 0xe32a,0xe32a
.value 0x3bfc,0x3bfc
.value 0x5f48,0x5f48
.value 0x8180,0x8180
.value 0x0842,0x0842
.value 0x0c79,0x0c79
.value 0x04c2,0x04c2
.value 0x07ca,0x07ca
.value 0x0997,0x0997
.value 0x00dc,0x00dc
.value 0x085e,0x085e
.value 0x0686,0x0686
.value 0xae42,0xae42
.value 0xe779,0xe779
.value 0x2ac2,0x2ac2
.value 0xc5ca,0xc5ca
.value 0x5e97,0x5e97
.value 0xd4dc,0xd4dc
.value 0x425e,0x425e
.value 0x3886,0x3886
.value 0x0860,0x0860
.value 0x0707,0x0707
.value 0x0803,0x0803
.value 0x031a,0x031a
.value 0x071b,0x071b
.value 0x09ab,0x09ab
.value 0x099b,0x099b
.value 0x01de,0x01de
.value 0x2860,0x2860
.value 0xac07,0xac07
.value 0xe103,0xe103
.value 0xb11a,0xb11a
.value 0xa81b,0xa81b
.value 0x5aab,0x5aab
.value 0x2a9b,0x2a9b
.value 0xbbde,0xbbde
.value 0x0c95,0x0c95
.value 0x0bcd,0x0bcd
.value 0x03e4,0x03e4
.value 0x03df,0x03df
.value 0x03be,0x03be
.value 0x074d,0x074d
.value 0x05f2,0x05f2
.value 0x065c,0x065c
.value 0x7b95,0x7b95
.value 0xa2cd,0xa2cd
.value 0x6fe4,0x6fe4
.value 0xb0df,0xb0df
.value 0x5dbe,0x5dbe
.value 0x1e4d,0x1e4d
.value 0xbbf2,0xbbf2
.value 0x5a5c,0x5a5c
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_avx2_zetas_basemul:
.value 0x08b2,0x081e
.value 0xf74e,0xf7e2
.value 0x01ae,0x0367
.value 0xfe52,0xfc99
.value 0x022b,0x060e
.value 0xfdd5,0xf9f2
.value 0x034b,0x0069
.value 0xfcb5,0xff97
.value 0xfeb2,0x821e
.value 0x014e,0x7de2
.value 0x2bae,0xc867
.value 0xd452,0x3799
.value 0xd32b,0x500e
.value 0x2cd5,0xaff2
.value 0x344b,0xab69
.value 0xcbb5,0x5497
.value 0x01a6,0x0bde
.value 0xfe5a,0xf422
.value 0x024b,0x0b35
.value 0xfdb5,0xf4cb
.value 0x00b1,0x0626
.value 0xff4f,0xf9da
.value 0x0c16,0x0675
.value 0xf3ea,0xf98b
.value 0x93a6,0xc5de
.value 0x6c5a,0x3a22
.value 0x334b,0x5a35
.value 0xccb5,0xa5cb
.value 0x03b1,0x1826
.value 0xfc4f,0xe7da
.value 0xee16,0x1575
.value 0x11ea,0xea8b
.value 0x0c0b,0x09f8
.value 0xf3f5,0xf608
.value 0x030a,0x05cb
.value 0xfcf6,0xfa35
.value 0x0487,0x0aa7
.value 0xfb79,0xf559
.value 0x0c6e,0x045f
.value 0xf392,0xfba1
.value 0x7d0b,0x71f8
.value 0x82f5,0x8e08
.value 0x810a,0xb6cb
.value 0x7ef6,0x4935
.value 0x2987,0x8fa7
.value 0xd679,0x7059
.value 0x766e,0x315f
.value 0x8992,0xcea1
.value 0x06cb,0x01a2
.value 0xf935,0xfe5e
.value 0x0284,0x0149
.value 0xfd7c,0xfeb7
.value 0x0999,0x0c65
.value 0xf667,0xf39b
.value 0x015d,0x0cb6
.value 0xfea3,0xf34a
.value 0xb7cb,0xc7a2
.value 0x4835,0x385e
.value 0x4e84,0x4c49
.value 0xb17c,0xb3b7
.value 0x4499,0xeb65
.value 0xbb67,0x149b
.value 0x485d,0xceb6
.value 0xb7a3,0x314a
.value 0x0331,0x052a
.value 0xfccf,0xfad6
.value 0x0449,0x07fc
.value 0xfbb7,0xf804
.value 0x025b,0x0748
.value 0xfda5,0xf8b8
.value 0x0262,0x0180
.value 0xfd9e,0xfe80
.value 0x8631,0xe32a
.value 0x79cf,0x1cd6
.value 0x4f49,0x3bfc
.value 0xb0b7,0xc404
.value 0x635b,0x5f48
.value 0x9ca5,0xa0b8
.value 0x0862,0x8180
.value 0xf79e,0x7e80
.value 0x0842,0x0997
.value 0xf7be,0xf669
.value 0x0c79,0x00dc
.value 0xf387,0xff24
.value 0x04c2,0x085e
.value 0xfb3e,0xf7a2
.value 0x07ca,0x0686
.value 0xf836,0xf97a
.value 0xae42,0x5e97
.value 0x51be,0xa169
.value 0xe779,0xd4dc
.value 0x1887,0x2b24
.value 0x2ac2,0x425e
.value 0xd53e,0xbda2
.value 0xc5ca,0x3886
.value 0x3a36,0xc77a
.value 0x0860,0x071b
.value 0xf7a0,0xf8e5
.value 0x0707,0x09ab
.value 0xf8f9,0xf655
.value 0x0803,0x099b
.value 0xf7fd,0xf665
.value 0x031a,0x01de
.value 0xfce6,0xfe22
.value 0x2860,0xa81b
.value 0xd7a0,0x57e5
.value 0xac07,0x5aab
.value 0x53f9,0xa555
.value 0xe103,0x2a9b
.value 0x1efd,0xd565
.value 0xb11a,0xbbde
.value 0x4ee6,0x4422
.value 0x0c95,0x03be
.value 0xf36b,0xfc42
.value 0x0bcd,0x074d
.value 0xf433,0xf8b3
.value 0x03e4,0x05f2
.value 0xfc1c,0xfa0e
.value 0x03df,0x065c
.value 0xfc21,0xf9a4
.value 0x7b95,0x5dbe
.value 0x846b,0xa242
.value 0xa2cd,0x1e4d
.value 0x5d33,0xe1b3
.value 0x6fe4,0xbbf2
.value 0x901c,0x440e
.value 0xb0df,0x5a5c
.value 0x4f21,0xa5a4
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_avx2_zetas_inv:
.value 0x06a5,0x06a5
.value 0x05b4,0x05b4
.value 0x070f,0x070f
.value 0x0943,0x0943
.value 0x0922,0x0922
.value 0x0134,0x0134
.value 0x091d,0x091d
.value 0x006c,0x006c
.value 0xa5a5,0xa5a5
.value 0xe1b4,0xe1b4
.value 0x440f,0x440f
.value 0xa243,0xa243
.value 0x4f22,0x4f22
.value 0x5d34,0x5d34
.value 0x901d,0x901d
.value 0x846c,0x846c
.value 0x0b23,0x0b23
.value 0x0356,0x0356
.value 0x0366,0x0366
.value 0x05e6,0x05e6
.value 0x09e7,0x09e7
.value 0x05fa,0x05fa
.value 0x04fe,0x04fe
.value 0x04a1,0x04a1
.value 0x4423,0x4423
.value 0xa556,0xa556
.value 0xd566,0xd566
.value 0x57e6,0x57e6
.value 0x4ee7,0x4ee7
.value 0x53fa,0x53fa
.value 0x1efe,0x1efe
.value 0xd7a1,0xd7a1
.value 0x04fb,0x04fb
.value 0x04fb,0x04fb
.value 0x0a5c,0x0a5c
.value 0x0a5c,0x0a5c
.value 0x0429,0x0429
.value 0x0429,0x0429
.value 0x0b41,0x0b41
.value 0x0b41,0x0b41
.value 0x45fb,0x45fb
.value 0x45fb,0x45fb
.value 0x5e5c,0x5e5c
.value 0x5e5c,0x5e5c
.value 0xef29,0xef29
.value 0xef29,0xef29
.value 0xbe41,0xbe41
.value 0xbe41,0xbe41
.value 0x02d5,0x02d5
.value 0x02d5,0x02d5
.value 0x05e4,0x05e4
.value 0x05e4,0x05e4
.value 0x0940,0x0940
.value 0x0940,0x0940
.value 0x018e,0x018e
.value 0x018e,0x018e
.value 0x31d5,0x31d5
.value 0x31d5,0x31d5
.value 0x71e4,0x71e4
.value 0x71e4,0x71e4
.value 0xc940,0xc940
.value 0xc940,0xc940
.value 0xcb8e,0xcb8e
.value 0xcb8e,0xcb8e
.value 0x0623,0x0623
.value 0x0623,0x0623
.value 0x0623,0x0623
.value 0x0623,0x0623
.value 0x00cd,0x00cd
.value 0x00cd,0x00cd
.value 0x00cd,0x00cd
.value 0x00cd,0x00cd
.value 0x3f23,0x3f23
.value 0x3f23,0x3f23
.value 0x3f23,0x3f23
.value 0x3f23,0x3f23
.value 0x97cd,0x97cd
.value 0x97cd,0x97cd
.value 0x97cd,0x97cd
.value 0x97cd,0x97cd
.value 0x0b66,0x0b66
.value 0x0b66,0x0b66
.value 0x0b66,0x0b66
.value 0x0b66,0x0b66
.value 0x0606,0x0606
.value 0x0606,0x0606
.value 0x0606,0x0606
.value 0x0606,0x0606
.value 0xdd66,0xdd66
.value 0xdd66,0xdd66
.value 0xdd66,0xdd66
.value 0xdd66,0xdd66
.value 0xb806,0xb806
.value 0xb806,0xb806
.value 0xb806,0xb806
.value 0xb806,0xb806
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x0745,0x0745
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x8645,0x8645
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x05c2,0x05c2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x2bc2,0x2bc2
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x0c37,0x0c37
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x4137,0x4137
.value 0x067b,0x067b
.value 0x0c25,0x0c25
.value 0x04a3,0x04a3
.value 0x036a,0x036a
.value 0x0537,0x0537
.value 0x0088,0x0088
.value 0x083f,0x083f
.value 0x04bf,0x04bf
.value 0xc77b,0xc77b
.value 0x2b25,0x2b25
.value 0xbda3,0xbda3
.value 0xa16a,0xa16a
.value 0x3a37,0x3a37
.value 0x1888,0x1888
.value 0xd53f,0xd53f
.value 0x51bf,0x51bf
.value 0x0b81,0x0b81
.value 0x0505,0x0505
.value 0x05b9,0x05b9
.value 0x07d7,0x07d7
.value 0x0a9f,0x0a9f
.value 0x08b8,0x08b8
.value 0x0aa6,0x0aa6
.value 0x09d0,0x09d0
.value 0x7e81,0x7e81
.value 0xc405,0xc405
.value 0xa0b9,0xa0b9
.value 0x1cd7,0x1cd7
.value 0xf79f,0xf79f
.value 0xb0b8,0xb0b8
.value 0x9ca6,0x9ca6
.value 0x79d0,0x79d0
.value 0x03b7,0x03b7
.value 0x03b7,0x03b7
.value 0x00f7,0x00f7
.value 0x00f7,0x00f7
.value 0x058d,0x058d
.value 0x058d,0x058d
.value 0x0c96,0x0c96
.value 0x0c96,0x0c96
.value 0xb8b7,0xb8b7
.value 0xb8b7,0xb8b7
.value 0x75f7,0x75f7
.value 0x75f7,0x75f7
.value 0xdc8d,0xdc8d
.value 0xdc8d,0xdc8d
.value 0x6e96,0x6e96
.value 0x6e96,0x6e96
.value 0x09c3,0x09c3
.value 0x09c3,0x09c3
.value 0x010f,0x010f
.value 0x010f,0x010f
.value 0x005a,0x005a
.value 0x005a,0x005a
.value 0x0355,0x0355
.value 0x0355,0x0355
.value 0x22c3,0x22c3
.value 0x22c3,0x22c3
.value 0x3e0f,0x3e0f
.value 0x3e0f,0x3e0f
.value 0x6e5a,0x6e5a
.value 0x6e5a,0x6e5a
.value 0xb255,0xb255
.value 0xb255,0xb255
.value 0x0aa1,0x0aa1
.value 0x0aa1,0x0aa1
.value 0x0aa1,0x0aa1
.value 0x0aa1,0x0aa1
.value 0x0a25,0x0a25
.value 0x0a25,0x0a25
.value 0x0a25,0x0a25
.value 0x0a25,0x0a25
.value 0xdda1,0xdda1
.value 0xdda1,0xdda1
.value 0xdda1,0xdda1
.value 0xdda1,0xdda1
.value 0x2925,0x2925
.value 0x2925,0x2925
.value 0x2925,0x2925
.value 0x2925,0x2925
.value 0x0908,0x0908
.value 0x0908,0x0908
.value 0x0908,0x0908
.value 0x0908,0x0908
.value 0x02a9,0x02a9
.value 0x02a9,0x02a9
.value 0x02a9,0x02a9
.value 0x02a9,0x02a9
.value 0xa108,0xa108
.value 0xa108,0xa108
.value 0xa108,0xa108
.value 0xa108,0xa108
.value 0x6da9,0x6da9
.value 0x6da9,0x6da9
.value 0x6da9,0x6da9
.value 0x6da9,0x6da9
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0x04b2,0x04b2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0xfab2,0xfab2
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0x093f,0x093f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0xd63f,0xd63f
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x0be2,0x0be2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x91e2,0x91e2
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0x05ed,0x05ed
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0xfced,0xfced
.value 0x004b,0x004b
.value 0x0bb8,0x0bb8
.value 0x009c,0x009c
.value 0x0b5f,0x0b5f
.value 0x0ba4,0x0ba4
.value 0x0a7d,0x0a7d
.value 0x0368,0x0368
.value 0x0636,0x0636
.value 0x314b,0x314b
.value 0xb3b8,0xb3b8
.value 0x149c,0x149c
.value 0x385f,0x385f
.value 0xb7a4,0xb7a4
.value 0xb17d,0xb17d
.value 0xbb68,0xbb68
.value 0x4836,0x4836
.value 0x08a2,0x08a2
.value 0x0736,0x0736
.value 0x025a,0x025a
.value 0x0309,0x0309
.value 0x0093,0x0093
.value 0x09f7,0x09f7
.value 0x087a,0x087a
.value 0x00f6,0x00f6
.value 0xcea2,0xcea2
.value 0x4936,0x4936
.value 0x705a,0x705a
.value 0x8e09,0x8e09
.value 0x8993,0x8993
.value 0x7ef7,0x7ef7
.value 0xd67a,0xd67a
.value 0x82f6,0x82f6
.value 0x0744,0x0744
.value 0x0744,0x0744
.value 0x0c83,0x0c83
.value 0x0c83,0x0c83
.value 0x048a,0x048a
.value 0x048a,0x048a
.value 0x0652,0x0652
.value 0x0652,0x0652
.value 0x9344,0x9344
.value 0x9344,0x9344
.value 0x6583,0x6583
.value 0x6583,0x6583
.value 0x028a,0x028a
.value 0x028a,0x028a
.value 0xdc52,0xdc52
.value 0xdc52,0xdc52
.value 0x029a,0x029a
.value 0x029a,0x029a
.value 0x0140,0x0140
.value 0x0140,0x0140
.value 0x0008,0x0008
.value 0x0008,0x0008
.value 0x0afd,0x0afd
.value 0x0afd,0x0afd
.value 0x309a,0x309a
.value 0x309a,0x309a
.value 0xc140,0xc140
.value 0xc140,0xc140
.value 0x9808,0x9808
.value 0x9808,0x9808
.value 0x31fd,0x31fd
.value 0x31fd,0x31fd
.value 0x0082,0x0082
.value 0x0082,0x0082
.value 0x0082,0x0082
.value 0x0082,0x0082
.value 0x0642,0x0642
.value 0x0642,0x0642
.value 0x0642,0x0642
.value 0x0642,0x0642
.value 0x6682,0x6682
.value 0x6682,0x6682
.value 0x6682,0x6682
.value 0x6682,0x6682
.value 0xac42,0xac42
.value 0xac42,0xac42
.value 0xac42,0xac42
.value 0xac42,0xac42
.value 0x074f,0x074f
.value 0x074f,0x074f
.value 0x074f,0x074f
.value 0x074f,0x074f
.value 0x033d,0x033d
.value 0x033d,0x033d
.value 0x033d,0x033d
.value 0x033d,0x033d
.value 0x044f,0x044f
.value 0x044f,0x044f
.value 0x044f,0x044f
.value 0x044f,0x044f
.value 0xea3d,0xea3d
.value 0xea3d,0xea3d
.value 0xea3d,0xea3d
.value 0xea3d,0xea3d
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x0c4b,0x0c4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x3d4b,0x3d4b
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x06d8,0x06d8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0ed8,0x0ed8
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x0773,0x0773
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x3073,0x3073
.value 0x068c,0x068c
.value 0x01cc,0x01cc
.value 0x06db,0x06db
.value 0x0123,0x0123
.value 0x00eb,0x00eb
.value 0x0ab6,0x0ab6
.value 0x0c50,0x0c50
.value 0x0b5b,0x0b5b
.value 0xea8c,0xea8c
.value 0xa5cc,0xa5cc
.value 0xe7db,0xe7db
.value 0x3a23,0x3a23
.value 0x11eb,0x11eb
.value 0xccb6,0xccb6
.value 0xfc50,0xfc50
.value 0x6c5b,0x6c5b
.value 0x0c98,0x0c98
.value 0x099a,0x099a
.value 0x06f3,0x06f3
.value 0x04e3,0x04e3
.value 0x09b6,0x09b6
.value 0x0b53,0x0b53
.value 0x0ad6,0x0ad6
.value 0x044f,0x044f
.value 0x5498,0x5498
.value 0x379a,0x379a
.value 0xaff3,0xaff3
.value 0x7de3,0x7de3
.value 0xcbb6,0xcbb6
.value 0xd453,0xd453
.value 0x2cd6,0x2cd6
.value 0x014f,0x014f
.value 0x0608,0x0608
.value 0x0608,0x0608
.value 0x011a,0x011a
.value 0x011a,0x011a
.value 0x072e,0x072e
.value 0x072e,0x072e
.value 0x050d,0x050d
.value 0x050d,0x050d
.value 0x9e08,0x9e08
.value 0x9e08,0x9e08
.value 0xaf1a,0xaf1a
.value 0xaf1a,0xaf1a
.value 0xb12e,0xb12e
.value 0xb12e,0xb12e
.value 0x5c0d,0x5c0d
.value 0x5c0d,0x5c0d
.value 0x090a,0x090a
.value 0x090a,0x090a
.value 0x0228,0x0228
.value 0x0228,0x0228
.value 0x0a75,0x0a75
.value 0x0a75,0x0a75
.value 0x083a,0x083a
.value 0x083a,0x083a
.value 0x870a,0x870a
.value 0x870a,0x870a
.value 0xfa28,0xfa28
.value 0xfa28,0xfa28
.value 0x1975,0x1975
.value 0x1975,0x1975
.value 0x163a,0x163a
.value 0x163a,0x163a
.value 0x0b82,0x0b82
.value 0x0b82,0x0b82
.value 0x0b82,0x0b82
.value 0x0b82,0x0b82
.value 0x0bf9,0x0bf9
.value 0x0bf9,0x0bf9
.value 0x0bf9,0x0bf9
.value 0x0bf9,0x0bf9
.value 0x7182,0x7182
.value 0x7182,0x7182
.value 0x7182,0x7182
.value 0x7182,0x7182
.value 0x66f9,0x66f9
.value 0x66f9,0x66f9
.value 0x66f9,0x66f9
.value 0x66f9,0x66f9
.value 0x052d,0x052d
.value 0x052d,0x052d
.value 0x052d,0x052d
.value 0x052d,0x052d
.value 0x0ac4,0x0ac4
.value 0x0ac4,0x0ac4
.value 0x0ac4,0x0ac4
.value 0x0ac4,0x0ac4
.value 0xbc2d,0xbc2d
.value 0xbc2d,0xbc2d
.value 0xbc2d,0xbc2d
.value 0xbc2d,0xbc2d
.value 0x16c4,0x16c4
.value 0x16c4,0x16c4
.value 0x16c4,0x16c4
.value 0x16c4,0x16c4
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x0a93,0x0a93
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x9393,0x9393
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x00ab,0x00ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x51ab,0x51ab
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0x072c,0x072c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0xcb2c,0xcb2c
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0x0167,0x0167
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0xc667,0xc667
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x02f6,0x02f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x84f6,0x84f6
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0x05a1,0x05a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
.value 0xd8a1,0xd8a1
#ifndef __APPLE__
.text
.globl mlkem_keygen_avx2
.type mlkem_keygen_avx2,@function
.align 16
mlkem_keygen_avx2:
#else
.section __TEXT,__text
.globl _mlkem_keygen_avx2
.p2align 4
_mlkem_keygen_avx2:
#endif /* __APPLE__ */
pushq %r12
vmovdqu mlkem_q(%rip), %ymm14
vmovdqu mlkem_v(%rip), %ymm15
movq %rdi, %r11
movslq %r8d, %r9
movq %rdi, %r10
L_mlkem_keygen_avx2_priv:
# ntt
leaq L_mlkem_avx2_zetas(%rip), %r12
vmovdqu (%r12), %ymm10
vmovdqu 32(%r12), %ymm12
vmovdqu 128(%r10), %ymm0
vmovdqu 160(%r10), %ymm1
vmovdqu 192(%r10), %ymm2
vmovdqu 224(%r10), %ymm3
vmovdqu 384(%r10), %ymm4
vmovdqu 416(%r10), %ymm5
vmovdqu 448(%r10), %ymm6
vmovdqu 480(%r10), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm0, 128(%r10)
vmovdqu %ymm1, 160(%r10)
vmovdqu %ymm2, 192(%r10)
vmovdqu %ymm3, 224(%r10)
vmovdqu %ymm4, 384(%r10)
vmovdqu %ymm5, 416(%r10)
vmovdqu %ymm6, 448(%r10)
vmovdqu %ymm7, 480(%r10)
vmovdqu (%r10), %ymm0
vmovdqu 32(%r10), %ymm1
vmovdqu 64(%r10), %ymm2
vmovdqu 96(%r10), %ymm3
vmovdqu 256(%r10), %ymm4
vmovdqu 288(%r10), %ymm5
vmovdqu 320(%r10), %ymm6
vmovdqu 352(%r10), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm4, 256(%r10)
vmovdqu %ymm5, 288(%r10)
vmovdqu %ymm6, 320(%r10)
vmovdqu %ymm7, 352(%r10)
vmovdqu 128(%r10), %ymm4
vmovdqu 160(%r10), %ymm5
vmovdqu 192(%r10), %ymm6
vmovdqu 224(%r10), %ymm7
# 64: 0/3
vmovdqu 64(%r12), %ymm10
vmovdqu 96(%r12), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 0/3
vmovdqu 128(%r12), %ymm10
vmovdqu 160(%r12), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 0/3
vmovdqu 192(%r12), %ymm10
vmovdqu 224(%r12), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 0/3
vmovdqu 256(%r12), %ymm10
vmovdqu 288(%r12), %ymm12
vmovdqu 320(%r12), %ymm11
vmovdqu 352(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 0/3
vmovdqu 384(%r12), %ymm10
vmovdqu 416(%r12), %ymm12
vmovdqu 448(%r12), %ymm11
vmovdqu 480(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 0/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 512(%r12), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 544(%r12), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 576(%r12), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 608(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 0/3
vmovdqu 640(%r12), %ymm10
vmovdqu 672(%r12), %ymm12
vmovdqu 704(%r12), %ymm11
vmovdqu 736(%r12), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 0/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 768(%r12), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 800(%r12), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 832(%r12), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 864(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 0/3
vmovdqu 896(%r12), %ymm10
vmovdqu 928(%r12), %ymm12
vmovdqu 960(%r12), %ymm11
vmovdqu 992(%r12), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 0/3
vmovdqu 1024(%r12), %ymm10
vmovdqu 1056(%r12), %ymm12
vmovdqu 1088(%r12), %ymm11
vmovdqu 1120(%r12), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 0/3
vmovdqu 1152(%r12), %ymm10
vmovdqu 1184(%r12), %ymm12
vmovdqu 1216(%r12), %ymm11
vmovdqu 1248(%r12), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, (%r10)
vmovdqu %ymm9, 32(%r10)
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 64(%r10)
vmovdqu %ymm9, 96(%r10)
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 128(%r10)
vmovdqu %ymm9, 160(%r10)
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 192(%r10)
vmovdqu %ymm9, 224(%r10)
vmovdqu 256(%r10), %ymm0
vmovdqu 288(%r10), %ymm1
vmovdqu 320(%r10), %ymm2
vmovdqu 352(%r10), %ymm3
vmovdqu 384(%r10), %ymm4
vmovdqu 416(%r10), %ymm5
vmovdqu 448(%r10), %ymm6
vmovdqu 480(%r10), %ymm7
# 64: 1/3
vmovdqu 1280(%r12), %ymm10
vmovdqu 1312(%r12), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 1/3
vmovdqu 1344(%r12), %ymm10
vmovdqu 1376(%r12), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 1/3
vmovdqu 1408(%r12), %ymm10
vmovdqu 1440(%r12), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 1/3
vmovdqu 1472(%r12), %ymm10
vmovdqu 1504(%r12), %ymm12
vmovdqu 1536(%r12), %ymm11
vmovdqu 1568(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 1/3
vmovdqu 1600(%r12), %ymm10
vmovdqu 1632(%r12), %ymm12
vmovdqu 1664(%r12), %ymm11
vmovdqu 1696(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 1/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1728(%r12), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 1760(%r12), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 1792(%r12), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 1824(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 1/3
vmovdqu 1856(%r12), %ymm10
vmovdqu 1888(%r12), %ymm12
vmovdqu 1920(%r12), %ymm11
vmovdqu 1952(%r12), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 1/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1984(%r12), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 2016(%r12), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 2048(%r12), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 2080(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 1/3
vmovdqu 2112(%r12), %ymm10
vmovdqu 2144(%r12), %ymm12
vmovdqu 2176(%r12), %ymm11
vmovdqu 2208(%r12), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 1/3
vmovdqu 2240(%r12), %ymm10
vmovdqu 2272(%r12), %ymm12
vmovdqu 2304(%r12), %ymm11
vmovdqu 2336(%r12), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 1/3
vmovdqu 2368(%r12), %ymm10
vmovdqu 2400(%r12), %ymm12
vmovdqu 2432(%r12), %ymm11
vmovdqu 2464(%r12), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, 256(%r10)
vmovdqu %ymm9, 288(%r10)
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 320(%r10)
vmovdqu %ymm9, 352(%r10)
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 384(%r10)
vmovdqu %ymm9, 416(%r10)
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 448(%r10)
vmovdqu %ymm9, 480(%r10)
addq $0x200, %r10
subq $0x01, %r9
jg L_mlkem_keygen_avx2_priv
vmovdqu mlkem_qinv(%rip), %ymm13
movslq %r8d, %rax
movq %rsi, %r10
L_mlkem_keygen_avx2_acc:
# Pointwise acc mont
movslq %r8d, %r9
# Base mul mont
leaq L_mlkem_avx2_zetas_basemul(%rip), %r12
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdi), %ymm4
vmovdqu 32(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r12), %ymm10
vmovdqu 32(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, (%r10)
vmovdqu %ymm1, 32(%r10)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdi), %ymm4
vmovdqu 96(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r12), %ymm10
vmovdqu 96(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 64(%r10)
vmovdqu %ymm1, 96(%r10)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r12), %ymm10
vmovdqu 160(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 128(%r10)
vmovdqu %ymm1, 160(%r10)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdi), %ymm4
vmovdqu 224(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r12), %ymm10
vmovdqu 224(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 192(%r10)
vmovdqu %ymm1, 224(%r10)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdi), %ymm4
vmovdqu 288(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r12), %ymm10
vmovdqu 288(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 256(%r10)
vmovdqu %ymm1, 288(%r10)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdi), %ymm4
vmovdqu 352(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r12), %ymm10
vmovdqu 352(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 320(%r10)
vmovdqu %ymm1, 352(%r10)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r12), %ymm10
vmovdqu 416(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 384(%r10)
vmovdqu %ymm1, 416(%r10)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdi), %ymm4
vmovdqu 480(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r12), %ymm10
vmovdqu 480(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 448(%r10)
vmovdqu %ymm1, 480(%r10)
addq $0x200, %rcx
addq $0x200, %rdi
subq $2, %r9
jz L_pointwise_acc_mont_end_keygen
L_pointwise_acc_mont_start_keygen:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %r12
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdi), %ymm4
vmovdqu 32(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r12), %ymm10
vmovdqu 32(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%r10), %ymm6
vmovdqu 32(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%r10)
vmovdqu %ymm1, 32(%r10)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdi), %ymm4
vmovdqu 96(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r12), %ymm10
vmovdqu 96(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%r10), %ymm6
vmovdqu 96(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%r10)
vmovdqu %ymm1, 96(%r10)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r12), %ymm10
vmovdqu 160(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%r10), %ymm6
vmovdqu 160(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%r10)
vmovdqu %ymm1, 160(%r10)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdi), %ymm4
vmovdqu 224(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r12), %ymm10
vmovdqu 224(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%r10), %ymm6
vmovdqu 224(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%r10)
vmovdqu %ymm1, 224(%r10)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdi), %ymm4
vmovdqu 288(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r12), %ymm10
vmovdqu 288(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%r10), %ymm6
vmovdqu 288(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%r10)
vmovdqu %ymm1, 288(%r10)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdi), %ymm4
vmovdqu 352(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r12), %ymm10
vmovdqu 352(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%r10), %ymm6
vmovdqu 352(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%r10)
vmovdqu %ymm1, 352(%r10)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r12), %ymm10
vmovdqu 416(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%r10), %ymm6
vmovdqu 416(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%r10)
vmovdqu %ymm1, 416(%r10)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdi), %ymm4
vmovdqu 480(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r12), %ymm10
vmovdqu 480(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%r10), %ymm6
vmovdqu 480(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%r10)
vmovdqu %ymm1, 480(%r10)
addq $0x200, %rcx
addq $0x200, %rdi
subq $0x01, %r9
jg L_pointwise_acc_mont_start_keygen
L_pointwise_acc_mont_end_keygen:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %r12
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdi), %ymm4
vmovdqu 32(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r12), %ymm10
vmovdqu 32(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%r10), %ymm6
vmovdqu 32(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%r10)
vmovdqu %ymm1, 32(%r10)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdi), %ymm4
vmovdqu 96(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r12), %ymm10
vmovdqu 96(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%r10), %ymm6
vmovdqu 96(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%r10)
vmovdqu %ymm1, 96(%r10)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r12), %ymm10
vmovdqu 160(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%r10), %ymm6
vmovdqu 160(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%r10)
vmovdqu %ymm1, 160(%r10)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdi), %ymm4
vmovdqu 224(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r12), %ymm10
vmovdqu 224(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%r10), %ymm6
vmovdqu 224(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%r10)
vmovdqu %ymm1, 224(%r10)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdi), %ymm4
vmovdqu 288(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r12), %ymm10
vmovdqu 288(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%r10), %ymm6
vmovdqu 288(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%r10)
vmovdqu %ymm1, 288(%r10)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdi), %ymm4
vmovdqu 352(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r12), %ymm10
vmovdqu 352(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%r10), %ymm6
vmovdqu 352(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%r10)
vmovdqu %ymm1, 352(%r10)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r12), %ymm10
vmovdqu 416(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%r10), %ymm6
vmovdqu 416(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%r10)
vmovdqu %ymm1, 416(%r10)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdi), %ymm4
vmovdqu 480(%rdi), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r12), %ymm10
vmovdqu 480(%r12), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm13, %ymm1, %ymm8
vpmullw %ymm13, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%r10), %ymm6
vmovdqu 480(%r10), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%r10)
vmovdqu %ymm1, 480(%r10)
addq $0x200, %rcx
movq %r11, %rdi
addq $0x200, %r10
subq $0x01, %rax
jg L_mlkem_keygen_avx2_acc
movslq %r8d, %rax
vmovdqu mlkem_f(%rip), %ymm12
vmovdqu mlkem_f_qinv(%rip), %ymm13
movslq %r8d, %rax
movq %rsi, %r10
L_mlkem_keygen_avx2_to_mont:
# To Mont
vmovdqu (%r10), %ymm0
vmovdqu 32(%r10), %ymm1
vmovdqu 64(%r10), %ymm2
vmovdqu 96(%r10), %ymm3
vpmullw %ymm13, %ymm0, %ymm4
vpmulhw %ymm12, %ymm0, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm0
vpmullw %ymm13, %ymm1, %ymm4
vpmulhw %ymm12, %ymm1, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm1
vpmullw %ymm13, %ymm2, %ymm4
vpmulhw %ymm12, %ymm2, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm2
vpmullw %ymm13, %ymm3, %ymm4
vpmulhw %ymm12, %ymm3, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm3
vmovdqu %ymm0, (%r10)
vmovdqu %ymm1, 32(%r10)
vmovdqu %ymm2, 64(%r10)
vmovdqu %ymm3, 96(%r10)
vmovdqu 128(%r10), %ymm0
vmovdqu 160(%r10), %ymm1
vmovdqu 192(%r10), %ymm2
vmovdqu 224(%r10), %ymm3
vpmullw %ymm13, %ymm0, %ymm4
vpmulhw %ymm12, %ymm0, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm0
vpmullw %ymm13, %ymm1, %ymm4
vpmulhw %ymm12, %ymm1, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm1
vpmullw %ymm13, %ymm2, %ymm4
vpmulhw %ymm12, %ymm2, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm2
vpmullw %ymm13, %ymm3, %ymm4
vpmulhw %ymm12, %ymm3, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm3
vmovdqu %ymm0, 128(%r10)
vmovdqu %ymm1, 160(%r10)
vmovdqu %ymm2, 192(%r10)
vmovdqu %ymm3, 224(%r10)
vmovdqu 256(%r10), %ymm0
vmovdqu 288(%r10), %ymm1
vmovdqu 320(%r10), %ymm2
vmovdqu 352(%r10), %ymm3
vpmullw %ymm13, %ymm0, %ymm4
vpmulhw %ymm12, %ymm0, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm0
vpmullw %ymm13, %ymm1, %ymm4
vpmulhw %ymm12, %ymm1, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm1
vpmullw %ymm13, %ymm2, %ymm4
vpmulhw %ymm12, %ymm2, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm2
vpmullw %ymm13, %ymm3, %ymm4
vpmulhw %ymm12, %ymm3, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm3
vmovdqu %ymm0, 256(%r10)
vmovdqu %ymm1, 288(%r10)
vmovdqu %ymm2, 320(%r10)
vmovdqu %ymm3, 352(%r10)
vmovdqu 384(%r10), %ymm0
vmovdqu 416(%r10), %ymm1
vmovdqu 448(%r10), %ymm2
vmovdqu 480(%r10), %ymm3
vpmullw %ymm13, %ymm0, %ymm4
vpmulhw %ymm12, %ymm0, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm0
vpmullw %ymm13, %ymm1, %ymm4
vpmulhw %ymm12, %ymm1, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm1
vpmullw %ymm13, %ymm2, %ymm4
vpmulhw %ymm12, %ymm2, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm2
vpmullw %ymm13, %ymm3, %ymm4
vpmulhw %ymm12, %ymm3, %ymm5
vpmulhw %ymm14, %ymm4, %ymm4
vpsubw %ymm4, %ymm5, %ymm3
vmovdqu %ymm0, 384(%r10)
vmovdqu %ymm1, 416(%r10)
vmovdqu %ymm2, 448(%r10)
vmovdqu %ymm3, 480(%r10)
addq $0x200, %r10
subq $0x01, %rax
jg L_mlkem_keygen_avx2_to_mont
movslq %r8d, %rax
L_mlkem_keygen_avx2_to_mont_ntt_err:
# ntt
leaq L_mlkem_avx2_zetas(%rip), %r12
vmovdqu (%r12), %ymm10
vmovdqu 32(%r12), %ymm12
vmovdqu 128(%rdx), %ymm0
vmovdqu 160(%rdx), %ymm1
vmovdqu 192(%rdx), %ymm2
vmovdqu 224(%rdx), %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vmovdqu 448(%rdx), %ymm6
vmovdqu 480(%rdx), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu %ymm2, 192(%rdx)
vmovdqu %ymm3, 224(%rdx)
vmovdqu %ymm4, 384(%rdx)
vmovdqu %ymm5, 416(%rdx)
vmovdqu %ymm6, 448(%rdx)
vmovdqu %ymm7, 480(%rdx)
vmovdqu (%rdx), %ymm0
vmovdqu 32(%rdx), %ymm1
vmovdqu 64(%rdx), %ymm2
vmovdqu 96(%rdx), %ymm3
vmovdqu 256(%rdx), %ymm4
vmovdqu 288(%rdx), %ymm5
vmovdqu 320(%rdx), %ymm6
vmovdqu 352(%rdx), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm4, 256(%rdx)
vmovdqu %ymm5, 288(%rdx)
vmovdqu %ymm6, 320(%rdx)
vmovdqu %ymm7, 352(%rdx)
vmovdqu 128(%rdx), %ymm4
vmovdqu 160(%rdx), %ymm5
vmovdqu 192(%rdx), %ymm6
vmovdqu 224(%rdx), %ymm7
# 64: 0/3
vmovdqu 64(%r12), %ymm10
vmovdqu 96(%r12), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 0/3
vmovdqu 128(%r12), %ymm10
vmovdqu 160(%r12), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 0/3
vmovdqu 192(%r12), %ymm10
vmovdqu 224(%r12), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 0/3
vmovdqu 256(%r12), %ymm10
vmovdqu 288(%r12), %ymm12
vmovdqu 320(%r12), %ymm11
vmovdqu 352(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 0/3
vmovdqu 384(%r12), %ymm10
vmovdqu 416(%r12), %ymm12
vmovdqu 448(%r12), %ymm11
vmovdqu 480(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 0/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 512(%r12), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 544(%r12), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 576(%r12), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 608(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 0/3
vmovdqu 640(%r12), %ymm10
vmovdqu 672(%r12), %ymm12
vmovdqu 704(%r12), %ymm11
vmovdqu 736(%r12), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 0/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 768(%r12), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 800(%r12), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 832(%r12), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 864(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 0/3
vmovdqu 896(%r12), %ymm10
vmovdqu 928(%r12), %ymm12
vmovdqu 960(%r12), %ymm11
vmovdqu 992(%r12), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 0/3
vmovdqu 1024(%r12), %ymm10
vmovdqu 1056(%r12), %ymm12
vmovdqu 1088(%r12), %ymm11
vmovdqu 1120(%r12), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 0/3
vmovdqu 1152(%r12), %ymm10
vmovdqu 1184(%r12), %ymm12
vmovdqu 1216(%r12), %ymm11
vmovdqu 1248(%r12), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vmovdqu (%rsi), %ymm8
vmovdqu 32(%rsi), %ymm9
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, (%rsi)
vmovdqu %ymm9, 32(%rsi)
vmovdqu 64(%rsi), %ymm8
vmovdqu 96(%rsi), %ymm9
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 64(%rsi)
vmovdqu %ymm9, 96(%rsi)
vmovdqu 128(%rsi), %ymm8
vmovdqu 160(%rsi), %ymm9
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 128(%rsi)
vmovdqu %ymm9, 160(%rsi)
vmovdqu 192(%rsi), %ymm8
vmovdqu 224(%rsi), %ymm9
vpaddw %ymm8, %ymm6, %ymm6
vpaddw %ymm9, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 192(%rsi)
vmovdqu %ymm9, 224(%rsi)
vmovdqu 256(%rdx), %ymm0
vmovdqu 288(%rdx), %ymm1
vmovdqu 320(%rdx), %ymm2
vmovdqu 352(%rdx), %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vmovdqu 448(%rdx), %ymm6
vmovdqu 480(%rdx), %ymm7
# 64: 1/3
vmovdqu 1280(%r12), %ymm10
vmovdqu 1312(%r12), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 1/3
vmovdqu 1344(%r12), %ymm10
vmovdqu 1376(%r12), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 1/3
vmovdqu 1408(%r12), %ymm10
vmovdqu 1440(%r12), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 1/3
vmovdqu 1472(%r12), %ymm10
vmovdqu 1504(%r12), %ymm12
vmovdqu 1536(%r12), %ymm11
vmovdqu 1568(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 1/3
vmovdqu 1600(%r12), %ymm10
vmovdqu 1632(%r12), %ymm12
vmovdqu 1664(%r12), %ymm11
vmovdqu 1696(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 1/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1728(%r12), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 1760(%r12), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 1792(%r12), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 1824(%r12), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 1/3
vmovdqu 1856(%r12), %ymm10
vmovdqu 1888(%r12), %ymm12
vmovdqu 1920(%r12), %ymm11
vmovdqu 1952(%r12), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 1/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1984(%r12), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 2016(%r12), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 2048(%r12), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 2080(%r12), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 1/3
vmovdqu 2112(%r12), %ymm10
vmovdqu 2144(%r12), %ymm12
vmovdqu 2176(%r12), %ymm11
vmovdqu 2208(%r12), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 1/3
vmovdqu 2240(%r12), %ymm10
vmovdqu 2272(%r12), %ymm12
vmovdqu 2304(%r12), %ymm11
vmovdqu 2336(%r12), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 1/3
vmovdqu 2368(%r12), %ymm10
vmovdqu 2400(%r12), %ymm12
vmovdqu 2432(%r12), %ymm11
vmovdqu 2464(%r12), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vmovdqu 256(%rsi), %ymm8
vmovdqu 288(%rsi), %ymm9
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, 256(%rsi)
vmovdqu %ymm9, 288(%rsi)
vmovdqu 320(%rsi), %ymm8
vmovdqu 352(%rsi), %ymm9
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 320(%rsi)
vmovdqu %ymm9, 352(%rsi)
vmovdqu 384(%rsi), %ymm8
vmovdqu 416(%rsi), %ymm9
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 384(%rsi)
vmovdqu %ymm9, 416(%rsi)
vmovdqu 448(%rsi), %ymm8
vmovdqu 480(%rsi), %ymm9
vpaddw %ymm8, %ymm6, %ymm6
vpaddw %ymm9, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 448(%rsi)
vmovdqu %ymm9, 480(%rsi)
addq $0x200, %rdx
addq $0x200, %rsi
subq $0x01, %rax
jg L_mlkem_keygen_avx2_to_mont_ntt_err
vzeroupper
popq %r12
repz retq
#ifndef __APPLE__
.size mlkem_keygen_avx2,.-mlkem_keygen_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_encapsulate_avx2
.type mlkem_encapsulate_avx2,@function
.align 16
mlkem_encapsulate_avx2:
#else
.section __TEXT,__text
.globl _mlkem_encapsulate_avx2
.p2align 4
_mlkem_encapsulate_avx2:
#endif /* __APPLE__ */
pushq %r12
pushq %r13
pushq %r14
pushq %r15
pushq %rbx
movq 48(%rsp), %rax
movq 56(%rsp), %r10
movq 64(%rsp), %r11
subq $48, %rsp
vmovdqu mlkem_q(%rip), %ymm14
vmovdqu mlkem_v(%rip), %ymm15
movq %r8, %r15
movslq %r11d, %r13
movq %r8, %r14
L_mlkem_encapsulate_avx2_trans:
# ntt
leaq L_mlkem_avx2_zetas(%rip), %rbx
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm12
vmovdqu 128(%r14), %ymm0
vmovdqu 160(%r14), %ymm1
vmovdqu 192(%r14), %ymm2
vmovdqu 224(%r14), %ymm3
vmovdqu 384(%r14), %ymm4
vmovdqu 416(%r14), %ymm5
vmovdqu 448(%r14), %ymm6
vmovdqu 480(%r14), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm0, 128(%r14)
vmovdqu %ymm1, 160(%r14)
vmovdqu %ymm2, 192(%r14)
vmovdqu %ymm3, 224(%r14)
vmovdqu %ymm4, 384(%r14)
vmovdqu %ymm5, 416(%r14)
vmovdqu %ymm6, 448(%r14)
vmovdqu %ymm7, 480(%r14)
vmovdqu (%r14), %ymm0
vmovdqu 32(%r14), %ymm1
vmovdqu 64(%r14), %ymm2
vmovdqu 96(%r14), %ymm3
vmovdqu 256(%r14), %ymm4
vmovdqu 288(%r14), %ymm5
vmovdqu 320(%r14), %ymm6
vmovdqu 352(%r14), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm4, 256(%r14)
vmovdqu %ymm5, 288(%r14)
vmovdqu %ymm6, 320(%r14)
vmovdqu %ymm7, 352(%r14)
vmovdqu 128(%r14), %ymm4
vmovdqu 160(%r14), %ymm5
vmovdqu 192(%r14), %ymm6
vmovdqu 224(%r14), %ymm7
# 64: 0/3
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 0/3
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 0/3
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 0/3
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm12
vmovdqu 320(%rbx), %ymm11
vmovdqu 352(%rbx), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 0/3
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm12
vmovdqu 448(%rbx), %ymm11
vmovdqu 480(%rbx), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 0/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 512(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 544(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 576(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 608(%rbx), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 0/3
vmovdqu 640(%rbx), %ymm10
vmovdqu 672(%rbx), %ymm12
vmovdqu 704(%rbx), %ymm11
vmovdqu 736(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 0/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 768(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 800(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 832(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 864(%rbx), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 0/3
vmovdqu 896(%rbx), %ymm10
vmovdqu 928(%rbx), %ymm12
vmovdqu 960(%rbx), %ymm11
vmovdqu 992(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 0/3
vmovdqu 1024(%rbx), %ymm10
vmovdqu 1056(%rbx), %ymm12
vmovdqu 1088(%rbx), %ymm11
vmovdqu 1120(%rbx), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 0/3
vmovdqu 1152(%rbx), %ymm10
vmovdqu 1184(%rbx), %ymm12
vmovdqu 1216(%rbx), %ymm11
vmovdqu 1248(%rbx), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vmovdqu %ymm0, (%r14)
vmovdqu %ymm1, 32(%r14)
vmovdqu %ymm2, 64(%r14)
vmovdqu %ymm3, 96(%r14)
vmovdqu %ymm4, 128(%r14)
vmovdqu %ymm5, 160(%r14)
vmovdqu %ymm6, 192(%r14)
vmovdqu %ymm7, 224(%r14)
vmovdqu 256(%r14), %ymm0
vmovdqu 288(%r14), %ymm1
vmovdqu 320(%r14), %ymm2
vmovdqu 352(%r14), %ymm3
vmovdqu 384(%r14), %ymm4
vmovdqu 416(%r14), %ymm5
vmovdqu 448(%r14), %ymm6
vmovdqu 480(%r14), %ymm7
# 64: 1/3
vmovdqu 1280(%rbx), %ymm10
vmovdqu 1312(%rbx), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 1/3
vmovdqu 1344(%rbx), %ymm10
vmovdqu 1376(%rbx), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 1/3
vmovdqu 1408(%rbx), %ymm10
vmovdqu 1440(%rbx), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 1/3
vmovdqu 1472(%rbx), %ymm10
vmovdqu 1504(%rbx), %ymm12
vmovdqu 1536(%rbx), %ymm11
vmovdqu 1568(%rbx), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 1/3
vmovdqu 1600(%rbx), %ymm10
vmovdqu 1632(%rbx), %ymm12
vmovdqu 1664(%rbx), %ymm11
vmovdqu 1696(%rbx), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 1/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1728(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 1760(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 1792(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 1824(%rbx), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 1/3
vmovdqu 1856(%rbx), %ymm10
vmovdqu 1888(%rbx), %ymm12
vmovdqu 1920(%rbx), %ymm11
vmovdqu 1952(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 1/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1984(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 2016(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 2048(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 2080(%rbx), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 1/3
vmovdqu 2112(%rbx), %ymm10
vmovdqu 2144(%rbx), %ymm12
vmovdqu 2176(%rbx), %ymm11
vmovdqu 2208(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 1/3
vmovdqu 2240(%rbx), %ymm10
vmovdqu 2272(%rbx), %ymm12
vmovdqu 2304(%rbx), %ymm11
vmovdqu 2336(%rbx), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 1/3
vmovdqu 2368(%rbx), %ymm10
vmovdqu 2400(%rbx), %ymm12
vmovdqu 2432(%rbx), %ymm11
vmovdqu 2464(%rbx), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vmovdqu %ymm0, 256(%r14)
vmovdqu %ymm1, 288(%r14)
vmovdqu %ymm2, 320(%r14)
vmovdqu %ymm3, 352(%r14)
vmovdqu %ymm4, 384(%r14)
vmovdqu %ymm5, 416(%r14)
vmovdqu %ymm6, 448(%r14)
vmovdqu %ymm7, 480(%r14)
addq $0x200, %r14
subq $0x01, %r13
jg L_mlkem_encapsulate_avx2_trans
movslq %r11d, %r12
L_mlkem_encapsulate_avx2_calc:
vmovdqu mlkem_qinv(%rip), %ymm12
# Pointwise acc mont
movslq %r11d, %r13
# Base mul mont
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rcx
addq $0x200, %r8
subq $2, %r13
jz L_pointwise_acc_mont_end_encap_bp
L_pointwise_acc_mont_start_encap_bp:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rsi), %ymm6
vmovdqu 32(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rsi), %ymm6
vmovdqu 96(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rsi), %ymm6
vmovdqu 160(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rsi), %ymm6
vmovdqu 288(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rsi), %ymm6
vmovdqu 416(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rcx
addq $0x200, %r8
subq $0x01, %r13
jg L_pointwise_acc_mont_start_encap_bp
L_pointwise_acc_mont_end_encap_bp:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rcx), %ymm2
vmovdqu 32(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rsi), %ymm6
vmovdqu 32(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rcx), %ymm2
vmovdqu 96(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rsi), %ymm6
vmovdqu 96(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rcx), %ymm2
vmovdqu 160(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rsi), %ymm6
vmovdqu 160(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rcx), %ymm2
vmovdqu 224(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rcx), %ymm2
vmovdqu 288(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rsi), %ymm6
vmovdqu 288(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rcx), %ymm2
vmovdqu 352(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rcx), %ymm2
vmovdqu 416(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rsi), %ymm6
vmovdqu 416(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rcx), %ymm2
vmovdqu 480(%rcx), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rcx
movq %r15, %r8
# invntt
leaq L_mlkem_avx2_zetas_inv(%rip), %rbx
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 128(%rsi), %ymm4
vmovdqu 160(%rsi), %ymm5
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
# 2: 1/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu (%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 32(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 64(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 96(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 1/2
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm12
vmovdqu 192(%rbx), %ymm11
vmovdqu 224(%rbx), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 1/2
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm12
vmovdqu 320(%rbx), %ymm11
vmovdqu 352(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 1/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 384(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 416(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 448(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 480(%rbx), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 1/2
vmovdqu 512(%rbx), %ymm10
vmovdqu 544(%rbx), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 1/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 576(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 608(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 640(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 672(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 1/2
vmovdqu 704(%rbx), %ymm10
vmovdqu 736(%rbx), %ymm12
vmovdqu 768(%rbx), %ymm11
vmovdqu 800(%rbx), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 1/2
vmovdqu 832(%rbx), %ymm10
vmovdqu 864(%rbx), %ymm12
vmovdqu 896(%rbx), %ymm11
vmovdqu 928(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 1/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 960(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 992(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 1024(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 1056(%rbx), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 1/2
vmovdqu 1088(%rbx), %ymm10
vmovdqu 1120(%rbx), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 1/2
vmovdqu 1152(%rbx), %ymm10
vmovdqu 1184(%rbx), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu %ymm4, 128(%rsi)
vmovdqu %ymm5, 160(%rsi)
vmovdqu %ymm6, 192(%rsi)
vmovdqu %ymm7, 224(%rsi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vmovdqu 320(%rsi), %ymm2
vmovdqu 352(%rsi), %ymm3
vmovdqu 384(%rsi), %ymm4
vmovdqu 416(%rsi), %ymm5
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
# 2: 2/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1216(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 1248(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 1280(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 1312(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 2/2
vmovdqu 1344(%rbx), %ymm10
vmovdqu 1376(%rbx), %ymm12
vmovdqu 1408(%rbx), %ymm11
vmovdqu 1440(%rbx), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 2/2
vmovdqu 1472(%rbx), %ymm10
vmovdqu 1504(%rbx), %ymm12
vmovdqu 1536(%rbx), %ymm11
vmovdqu 1568(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 2/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 1600(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 1632(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 1664(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 1696(%rbx), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 2/2
vmovdqu 1728(%rbx), %ymm10
vmovdqu 1760(%rbx), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 2/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1792(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 1824(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 1856(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 1888(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 2/2
vmovdqu 1920(%rbx), %ymm10
vmovdqu 1952(%rbx), %ymm12
vmovdqu 1984(%rbx), %ymm11
vmovdqu 2016(%rbx), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 2/2
vmovdqu 2048(%rbx), %ymm10
vmovdqu 2080(%rbx), %ymm12
vmovdqu 2112(%rbx), %ymm11
vmovdqu 2144(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 2/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 2176(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 2208(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 2240(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 2272(%rbx), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 2/2
vmovdqu 2304(%rbx), %ymm10
vmovdqu 2336(%rbx), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 2/2
vmovdqu 2368(%rbx), %ymm10
vmovdqu 2400(%rbx), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu %ymm2, 320(%rsi)
vmovdqu %ymm3, 352(%rsi)
# 128
vmovdqu 2432(%rbx), %ymm10
vmovdqu 2464(%rbx), %ymm12
vmovdqu 2496(%rbx), %ymm11
vmovdqu 2528(%rbx), %ymm13
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm1
vmovdqu 192(%rsi), %ymm2
vmovdqu 224(%rsi), %ymm3
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu %ymm2, 192(%rsi)
vmovdqu %ymm3, 224(%rsi)
vmovdqu %ymm4, 384(%rsi)
vmovdqu %ymm5, 416(%rsi)
vmovdqu %ymm6, 448(%rsi)
vmovdqu %ymm7, 480(%rsi)
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 256(%rsi), %ymm4
vmovdqu 288(%rsi), %ymm5
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu %ymm4, 256(%rsi)
vmovdqu %ymm5, 288(%rsi)
vmovdqu %ymm6, 320(%rsi)
vmovdqu %ymm7, 352(%rsi)
# Add Errors
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu (%r9), %ymm4
vmovdqu 32(%r9), %ymm5
vmovdqu 64(%r9), %ymm6
vmovdqu 96(%r9), %ymm7
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm1
vmovdqu 192(%rsi), %ymm2
vmovdqu 224(%rsi), %ymm3
vmovdqu 128(%r9), %ymm4
vmovdqu 160(%r9), %ymm5
vmovdqu 192(%r9), %ymm6
vmovdqu 224(%r9), %ymm7
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu %ymm2, 192(%rsi)
vmovdqu %ymm3, 224(%rsi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vmovdqu 320(%rsi), %ymm2
vmovdqu 352(%rsi), %ymm3
vmovdqu 256(%r9), %ymm4
vmovdqu 288(%r9), %ymm5
vmovdqu 320(%r9), %ymm6
vmovdqu 352(%r9), %ymm7
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu %ymm2, 320(%rsi)
vmovdqu %ymm3, 352(%rsi)
vmovdqu 384(%rsi), %ymm0
vmovdqu 416(%rsi), %ymm1
vmovdqu 448(%rsi), %ymm2
vmovdqu 480(%rsi), %ymm3
vmovdqu 384(%r9), %ymm4
vmovdqu 416(%r9), %ymm5
vmovdqu 448(%r9), %ymm6
vmovdqu 480(%r9), %ymm7
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu %ymm2, 448(%rsi)
vmovdqu %ymm3, 480(%rsi)
addq $0x200, %r9
addq $0x200, %rsi
subq $0x01, %r12
jg L_mlkem_encapsulate_avx2_calc
vmovdqu mlkem_qinv(%rip), %ymm12
# Pointwise acc mont
movslq %r11d, %r13
# Base mul mont
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rdx)
vmovdqu %ymm1, 96(%rdx)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rdx)
vmovdqu %ymm1, 224(%rdx)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rdx)
vmovdqu %ymm1, 288(%rdx)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rdx)
vmovdqu %ymm1, 352(%rdx)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rdx)
vmovdqu %ymm1, 416(%rdx)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rdx)
vmovdqu %ymm1, 480(%rdx)
addq $0x200, %rdi
addq $0x200, %r8
subq $2, %r13
jz L_pointwise_acc_mont_end_encap_v
L_pointwise_acc_mont_start_encap_v:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rdx), %ymm6
vmovdqu 32(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rdx), %ymm6
vmovdqu 96(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rdx)
vmovdqu %ymm1, 96(%rdx)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rdx), %ymm6
vmovdqu 160(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rdx), %ymm6
vmovdqu 224(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rdx)
vmovdqu %ymm1, 224(%rdx)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rdx), %ymm6
vmovdqu 288(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rdx)
vmovdqu %ymm1, 288(%rdx)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rdx), %ymm6
vmovdqu 352(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rdx)
vmovdqu %ymm1, 352(%rdx)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rdx), %ymm6
vmovdqu 416(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rdx)
vmovdqu %ymm1, 416(%rdx)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rdx), %ymm6
vmovdqu 480(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rdx)
vmovdqu %ymm1, 480(%rdx)
addq $0x200, %rdi
addq $0x200, %r8
subq $0x01, %r13
jg L_pointwise_acc_mont_start_encap_v
L_pointwise_acc_mont_end_encap_v:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %rbx
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%r8), %ymm4
vmovdqu 32(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%rbx), %ymm10
vmovdqu 32(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rdx), %ymm6
vmovdqu 32(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%r8), %ymm4
vmovdqu 96(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%rbx), %ymm10
vmovdqu 96(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rdx), %ymm6
vmovdqu 96(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rdx)
vmovdqu %ymm1, 96(%rdx)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%r8), %ymm4
vmovdqu 160(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rdx), %ymm6
vmovdqu 160(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%r8), %ymm4
vmovdqu 224(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%rbx), %ymm10
vmovdqu 224(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rdx), %ymm6
vmovdqu 224(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rdx)
vmovdqu %ymm1, 224(%rdx)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%r8), %ymm4
vmovdqu 288(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rdx), %ymm6
vmovdqu 288(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rdx)
vmovdqu %ymm1, 288(%rdx)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%r8), %ymm4
vmovdqu 352(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%rbx), %ymm10
vmovdqu 352(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rdx), %ymm6
vmovdqu 352(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rdx)
vmovdqu %ymm1, 352(%rdx)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%r8), %ymm4
vmovdqu 416(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%rbx), %ymm10
vmovdqu 416(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rdx), %ymm6
vmovdqu 416(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rdx)
vmovdqu %ymm1, 416(%rdx)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%r8), %ymm4
vmovdqu 480(%r8), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%rbx), %ymm10
vmovdqu 480(%rbx), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rdx), %ymm6
vmovdqu 480(%rdx), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rdx)
vmovdqu %ymm1, 480(%rdx)
addq $0x200, %rdi
# invntt
leaq L_mlkem_avx2_zetas_inv(%rip), %rbx
vmovdqu (%rdx), %ymm0
vmovdqu 32(%rdx), %ymm1
vmovdqu 64(%rdx), %ymm2
vmovdqu 96(%rdx), %ymm3
vmovdqu 128(%rdx), %ymm4
vmovdqu 160(%rdx), %ymm5
vmovdqu 192(%rdx), %ymm6
vmovdqu 224(%rdx), %ymm7
# 2: 1/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu (%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 32(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 64(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 96(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 1/2
vmovdqu 128(%rbx), %ymm10
vmovdqu 160(%rbx), %ymm12
vmovdqu 192(%rbx), %ymm11
vmovdqu 224(%rbx), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 1/2
vmovdqu 256(%rbx), %ymm10
vmovdqu 288(%rbx), %ymm12
vmovdqu 320(%rbx), %ymm11
vmovdqu 352(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 1/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 384(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 416(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 448(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 480(%rbx), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 1/2
vmovdqu 512(%rbx), %ymm10
vmovdqu 544(%rbx), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 1/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 576(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 608(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 640(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 672(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 1/2
vmovdqu 704(%rbx), %ymm10
vmovdqu 736(%rbx), %ymm12
vmovdqu 768(%rbx), %ymm11
vmovdqu 800(%rbx), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 1/2
vmovdqu 832(%rbx), %ymm10
vmovdqu 864(%rbx), %ymm12
vmovdqu 896(%rbx), %ymm11
vmovdqu 928(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 1/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 960(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 992(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 1024(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 1056(%rbx), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 1/2
vmovdqu 1088(%rbx), %ymm10
vmovdqu 1120(%rbx), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 1/2
vmovdqu 1152(%rbx), %ymm10
vmovdqu 1184(%rbx), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu %ymm2, 64(%rdx)
vmovdqu %ymm3, 96(%rdx)
vmovdqu %ymm4, 128(%rdx)
vmovdqu %ymm5, 160(%rdx)
vmovdqu %ymm6, 192(%rdx)
vmovdqu %ymm7, 224(%rdx)
vmovdqu 256(%rdx), %ymm0
vmovdqu 288(%rdx), %ymm1
vmovdqu 320(%rdx), %ymm2
vmovdqu 352(%rdx), %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vmovdqu 448(%rdx), %ymm6
vmovdqu 480(%rdx), %ymm7
# 2: 2/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1216(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 1248(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 1280(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 1312(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 2/2
vmovdqu 1344(%rbx), %ymm10
vmovdqu 1376(%rbx), %ymm12
vmovdqu 1408(%rbx), %ymm11
vmovdqu 1440(%rbx), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 2/2
vmovdqu 1472(%rbx), %ymm10
vmovdqu 1504(%rbx), %ymm12
vmovdqu 1536(%rbx), %ymm11
vmovdqu 1568(%rbx), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 2/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 1600(%rbx), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 1632(%rbx), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 1664(%rbx), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 1696(%rbx), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 2/2
vmovdqu 1728(%rbx), %ymm10
vmovdqu 1760(%rbx), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 2/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1792(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 1824(%rbx), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 1856(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 1888(%rbx), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 2/2
vmovdqu 1920(%rbx), %ymm10
vmovdqu 1952(%rbx), %ymm12
vmovdqu 1984(%rbx), %ymm11
vmovdqu 2016(%rbx), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 2/2
vmovdqu 2048(%rbx), %ymm10
vmovdqu 2080(%rbx), %ymm12
vmovdqu 2112(%rbx), %ymm11
vmovdqu 2144(%rbx), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 2/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 2176(%rbx), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 2208(%rbx), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 2240(%rbx), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 2272(%rbx), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 2/2
vmovdqu 2304(%rbx), %ymm10
vmovdqu 2336(%rbx), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 2/2
vmovdqu 2368(%rbx), %ymm10
vmovdqu 2400(%rbx), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, 256(%rdx)
vmovdqu %ymm1, 288(%rdx)
vmovdqu %ymm2, 320(%rdx)
vmovdqu %ymm3, 352(%rdx)
# 128
vmovdqu 2432(%rbx), %ymm10
vmovdqu 2464(%rbx), %ymm12
vmovdqu 2496(%rbx), %ymm11
vmovdqu 2528(%rbx), %ymm13
vmovdqu 128(%rdx), %ymm0
vmovdqu 160(%rdx), %ymm1
vmovdqu 192(%rdx), %ymm2
vmovdqu 224(%rdx), %ymm3
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu %ymm2, 192(%rdx)
vmovdqu %ymm3, 224(%rdx)
vmovdqu %ymm4, 384(%rdx)
vmovdqu %ymm5, 416(%rdx)
vmovdqu %ymm6, 448(%rdx)
vmovdqu %ymm7, 480(%rdx)
vmovdqu (%rdx), %ymm0
vmovdqu 32(%rdx), %ymm1
vmovdqu 64(%rdx), %ymm2
vmovdqu 96(%rdx), %ymm3
vmovdqu 256(%rdx), %ymm4
vmovdqu 288(%rdx), %ymm5
vmovdqu 320(%rdx), %ymm6
vmovdqu 352(%rdx), %ymm7
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu %ymm2, 64(%rdx)
vmovdqu %ymm3, 96(%rdx)
vmovdqu %ymm4, 256(%rdx)
vmovdqu %ymm5, 288(%rdx)
vmovdqu %ymm6, 320(%rdx)
vmovdqu %ymm7, 352(%rdx)
# Add Errors
vmovdqu (%r10), %ymm0
vmovdqu 32(%r10), %ymm1
vmovdqu 64(%r10), %ymm2
vmovdqu 96(%r10), %ymm3
vmovdqu (%rax), %ymm4
vmovdqu 32(%rax), %ymm5
vmovdqu 64(%rax), %ymm6
vmovdqu 96(%rax), %ymm7
vpaddw %ymm0, %ymm4, %ymm4
vpaddw %ymm1, %ymm5, %ymm5
vpaddw %ymm2, %ymm6, %ymm6
vpaddw %ymm3, %ymm7, %ymm7
vmovdqu (%rdx), %ymm0
vmovdqu 32(%rdx), %ymm1
vmovdqu 64(%rdx), %ymm2
vmovdqu 96(%rdx), %ymm3
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, (%rdx)
vmovdqu %ymm1, 32(%rdx)
vmovdqu %ymm2, 64(%rdx)
vmovdqu %ymm3, 96(%rdx)
vmovdqu 128(%r10), %ymm0
vmovdqu 160(%r10), %ymm1
vmovdqu 192(%r10), %ymm2
vmovdqu 224(%r10), %ymm3
vmovdqu 128(%rax), %ymm4
vmovdqu 160(%rax), %ymm5
vmovdqu 192(%rax), %ymm6
vmovdqu 224(%rax), %ymm7
vpaddw %ymm0, %ymm4, %ymm4
vpaddw %ymm1, %ymm5, %ymm5
vpaddw %ymm2, %ymm6, %ymm6
vpaddw %ymm3, %ymm7, %ymm7
vmovdqu 128(%rdx), %ymm0
vmovdqu 160(%rdx), %ymm1
vmovdqu 192(%rdx), %ymm2
vmovdqu 224(%rdx), %ymm3
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 128(%rdx)
vmovdqu %ymm1, 160(%rdx)
vmovdqu %ymm2, 192(%rdx)
vmovdqu %ymm3, 224(%rdx)
vmovdqu 256(%r10), %ymm0
vmovdqu 288(%r10), %ymm1
vmovdqu 320(%r10), %ymm2
vmovdqu 352(%r10), %ymm3
vmovdqu 256(%rax), %ymm4
vmovdqu 288(%rax), %ymm5
vmovdqu 320(%rax), %ymm6
vmovdqu 352(%rax), %ymm7
vpaddw %ymm0, %ymm4, %ymm4
vpaddw %ymm1, %ymm5, %ymm5
vpaddw %ymm2, %ymm6, %ymm6
vpaddw %ymm3, %ymm7, %ymm7
vmovdqu 256(%rdx), %ymm0
vmovdqu 288(%rdx), %ymm1
vmovdqu 320(%rdx), %ymm2
vmovdqu 352(%rdx), %ymm3
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 256(%rdx)
vmovdqu %ymm1, 288(%rdx)
vmovdqu %ymm2, 320(%rdx)
vmovdqu %ymm3, 352(%rdx)
vmovdqu 384(%r10), %ymm0
vmovdqu 416(%r10), %ymm1
vmovdqu 448(%r10), %ymm2
vmovdqu 480(%r10), %ymm3
vmovdqu 384(%rax), %ymm4
vmovdqu 416(%rax), %ymm5
vmovdqu 448(%rax), %ymm6
vmovdqu 480(%rax), %ymm7
vpaddw %ymm0, %ymm4, %ymm4
vpaddw %ymm1, %ymm5, %ymm5
vpaddw %ymm2, %ymm6, %ymm6
vpaddw %ymm3, %ymm7, %ymm7
vmovdqu 384(%rdx), %ymm0
vmovdqu 416(%rdx), %ymm1
vmovdqu 448(%rdx), %ymm2
vmovdqu 480(%rdx), %ymm3
vpaddw %ymm4, %ymm0, %ymm4
vpaddw %ymm5, %ymm1, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpaddw %ymm6, %ymm2, %ymm6
vpaddw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 384(%rdx)
vmovdqu %ymm1, 416(%rdx)
vmovdqu %ymm2, 448(%rdx)
vmovdqu %ymm3, 480(%rdx)
vzeroupper
addq $48, %rsp
popq %rbx
popq %r15
popq %r14
popq %r13
popq %r12
repz retq
#ifndef __APPLE__
.size mlkem_encapsulate_avx2,.-mlkem_encapsulate_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_decapsulate_avx2
.type mlkem_decapsulate_avx2,@function
.align 16
mlkem_decapsulate_avx2:
#else
.section __TEXT,__text
.globl _mlkem_decapsulate_avx2
.p2align 4
_mlkem_decapsulate_avx2:
#endif /* __APPLE__ */
vmovdqu mlkem_q(%rip), %ymm14
vmovdqu mlkem_v(%rip), %ymm15
movslq %r8d, %rax
movq %rdx, %r9
L_mlkem_decapsulate_avx2_trans:
# ntt
leaq L_mlkem_avx2_zetas(%rip), %r10
vmovdqu (%r10), %ymm10
vmovdqu 32(%r10), %ymm12
vmovdqu 128(%r9), %ymm0
vmovdqu 160(%r9), %ymm1
vmovdqu 192(%r9), %ymm2
vmovdqu 224(%r9), %ymm3
vmovdqu 384(%r9), %ymm4
vmovdqu 416(%r9), %ymm5
vmovdqu 448(%r9), %ymm6
vmovdqu 480(%r9), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm0, 128(%r9)
vmovdqu %ymm1, 160(%r9)
vmovdqu %ymm2, 192(%r9)
vmovdqu %ymm3, 224(%r9)
vmovdqu %ymm4, 384(%r9)
vmovdqu %ymm5, 416(%r9)
vmovdqu %ymm6, 448(%r9)
vmovdqu %ymm7, 480(%r9)
vmovdqu (%r9), %ymm0
vmovdqu 32(%r9), %ymm1
vmovdqu 64(%r9), %ymm2
vmovdqu 96(%r9), %ymm3
vmovdqu 256(%r9), %ymm4
vmovdqu 288(%r9), %ymm5
vmovdqu 320(%r9), %ymm6
vmovdqu 352(%r9), %ymm7
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vmovdqu %ymm4, 256(%r9)
vmovdqu %ymm5, 288(%r9)
vmovdqu %ymm6, 320(%r9)
vmovdqu %ymm7, 352(%r9)
vmovdqu 128(%r9), %ymm4
vmovdqu 160(%r9), %ymm5
vmovdqu 192(%r9), %ymm6
vmovdqu 224(%r9), %ymm7
# 64: 0/3
vmovdqu 64(%r10), %ymm10
vmovdqu 96(%r10), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 0/3
vmovdqu 128(%r10), %ymm10
vmovdqu 160(%r10), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 0/3
vmovdqu 192(%r10), %ymm10
vmovdqu 224(%r10), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 0/3
vmovdqu 256(%r10), %ymm10
vmovdqu 288(%r10), %ymm12
vmovdqu 320(%r10), %ymm11
vmovdqu 352(%r10), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 0/3
vmovdqu 384(%r10), %ymm10
vmovdqu 416(%r10), %ymm12
vmovdqu 448(%r10), %ymm11
vmovdqu 480(%r10), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 0/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 512(%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 544(%r10), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 576(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 608(%r10), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 0/3
vmovdqu 640(%r10), %ymm10
vmovdqu 672(%r10), %ymm12
vmovdqu 704(%r10), %ymm11
vmovdqu 736(%r10), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 0/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 768(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 800(%r10), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 832(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 864(%r10), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 0/3
vmovdqu 896(%r10), %ymm10
vmovdqu 928(%r10), %ymm12
vmovdqu 960(%r10), %ymm11
vmovdqu 992(%r10), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 0/3
vmovdqu 1024(%r10), %ymm10
vmovdqu 1056(%r10), %ymm12
vmovdqu 1088(%r10), %ymm11
vmovdqu 1120(%r10), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 0/3
vmovdqu 1152(%r10), %ymm10
vmovdqu 1184(%r10), %ymm12
vmovdqu 1216(%r10), %ymm11
vmovdqu 1248(%r10), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, (%r9)
vmovdqu %ymm9, 32(%r9)
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 64(%r9)
vmovdqu %ymm9, 96(%r9)
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 128(%r9)
vmovdqu %ymm9, 160(%r9)
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 192(%r9)
vmovdqu %ymm9, 224(%r9)
vmovdqu 256(%r9), %ymm0
vmovdqu 288(%r9), %ymm1
vmovdqu 320(%r9), %ymm2
vmovdqu 352(%r9), %ymm3
vmovdqu 384(%r9), %ymm4
vmovdqu 416(%r9), %ymm5
vmovdqu 448(%r9), %ymm6
vmovdqu 480(%r9), %ymm7
# 64: 1/3
vmovdqu 1280(%r10), %ymm10
vmovdqu 1312(%r10), %ymm12
vpmullw %ymm12, %ymm4, %ymm8
vpmullw %ymm12, %ymm5, %ymm9
vpmulhw %ymm10, %ymm4, %ymm4
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vpsubw %ymm8, %ymm0, %ymm4
vpsubw %ymm9, %ymm1, %ymm5
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm2, %ymm6
vpsubw %ymm9, %ymm3, %ymm7
vpaddw %ymm8, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
# 32: 1/3
vmovdqu 1344(%r10), %ymm10
vmovdqu 1376(%r10), %ymm12
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm2
vpsubw %ymm9, %ymm1, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
# 32: 1/3
vmovdqu 1408(%r10), %ymm10
vmovdqu 1440(%r10), %ymm12
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm6
vpsubw %ymm9, %ymm5, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
# 16: 1/3
vmovdqu 1472(%r10), %ymm10
vmovdqu 1504(%r10), %ymm12
vmovdqu 1536(%r10), %ymm11
vmovdqu 1568(%r10), %ymm13
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 16: 1/3
vmovdqu 1600(%r10), %ymm10
vmovdqu 1632(%r10), %ymm12
vmovdqu 1664(%r10), %ymm11
vmovdqu 1696(%r10), %ymm13
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 8: 1/3
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1728(%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm1
vmovdqu 1760(%r10), %ymm12
vperm2i128 $32, %ymm3, %ymm2, %ymm9
vmovdqu 1792(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm3
vmovdqu 1824(%r10), %ymm13
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm0
vpsubw %ymm2, %ymm3, %ymm2
vpsubw %ymm0, %ymm8, %ymm1
vpsubw %ymm2, %ymm9, %ymm3
vpaddw %ymm0, %ymm8, %ymm8
vpaddw %ymm2, %ymm9, %ymm9
# 4: 1/3
vmovdqu 1856(%r10), %ymm10
vmovdqu 1888(%r10), %ymm12
vmovdqu 1920(%r10), %ymm11
vmovdqu 1952(%r10), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 8: 1/3
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1984(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm5
vmovdqu 2016(%r10), %ymm12
vperm2i128 $32, %ymm7, %ymm6, %ymm9
vmovdqu 2048(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm7
vmovdqu 2080(%r10), %ymm13
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm4
vpsubw %ymm6, %ymm7, %ymm6
vpsubw %ymm4, %ymm8, %ymm5
vpsubw %ymm6, %ymm9, %ymm7
vpaddw %ymm4, %ymm8, %ymm8
vpaddw %ymm6, %ymm9, %ymm9
# 4: 1/3
vmovdqu 2112(%r10), %ymm10
vmovdqu 2144(%r10), %ymm12
vmovdqu 2176(%r10), %ymm11
vmovdqu 2208(%r10), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
# 2: 1/3
vmovdqu 2240(%r10), %ymm10
vmovdqu 2272(%r10), %ymm12
vmovdqu 2304(%r10), %ymm11
vmovdqu 2336(%r10), %ymm13
vpsllq $32, %ymm1, %ymm8
vpsrlq $32, %ymm0, %ymm9
vpblendd $0xaa, %ymm8, %ymm0, %ymm0
vpblendd $0x55, %ymm9, %ymm1, %ymm1
vpsllq $32, %ymm3, %ymm8
vpsrlq $32, %ymm2, %ymm9
vpblendd $0xaa, %ymm8, %ymm2, %ymm2
vpblendd $0x55, %ymm9, %ymm3, %ymm3
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm1, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vpsubw %ymm8, %ymm0, %ymm1
vpsubw %ymm9, %ymm2, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm2, %ymm2
# 2: 1/3
vmovdqu 2368(%r10), %ymm10
vmovdqu 2400(%r10), %ymm12
vmovdqu 2432(%r10), %ymm11
vmovdqu 2464(%r10), %ymm13
vpsllq $32, %ymm5, %ymm8
vpsrlq $32, %ymm4, %ymm9
vpblendd $0xaa, %ymm8, %ymm4, %ymm4
vpblendd $0x55, %ymm9, %ymm5, %ymm5
vpsllq $32, %ymm7, %ymm8
vpsrlq $32, %ymm6, %ymm9
vpblendd $0xaa, %ymm8, %ymm6, %ymm6
vpblendd $0x55, %ymm9, %ymm7, %ymm7
vpmullw %ymm12, %ymm5, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm5, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vpsubw %ymm8, %ymm4, %ymm5
vpsubw %ymm9, %ymm6, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm6, %ymm6
vpunpckldq %ymm1, %ymm0, %ymm8
vpunpckhdq %ymm1, %ymm0, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm0
vperm2i128 $49, %ymm9, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm2, %ymm8
vpunpckhdq %ymm3, %ymm2, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm2
vperm2i128 $49, %ymm9, %ymm8, %ymm3
vpunpckldq %ymm5, %ymm4, %ymm8
vpunpckhdq %ymm5, %ymm4, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm4
vperm2i128 $49, %ymm9, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm6, %ymm8
vpunpckhdq %ymm7, %ymm6, %ymm9
vperm2i128 $32, %ymm9, %ymm8, %ymm6
vperm2i128 $49, %ymm9, %ymm8, %ymm7
vpmulhw %ymm15, %ymm0, %ymm8
vpmulhw %ymm15, %ymm1, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm8
vpsubw %ymm9, %ymm1, %ymm9
vmovdqu %ymm8, 256(%r9)
vmovdqu %ymm9, 288(%r9)
vpmulhw %ymm15, %ymm2, %ymm8
vpmulhw %ymm15, %ymm3, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm8
vpsubw %ymm9, %ymm3, %ymm9
vmovdqu %ymm8, 320(%r9)
vmovdqu %ymm9, 352(%r9)
vpmulhw %ymm15, %ymm4, %ymm8
vpmulhw %ymm15, %ymm5, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm8
vpsubw %ymm9, %ymm5, %ymm9
vmovdqu %ymm8, 384(%r9)
vmovdqu %ymm9, 416(%r9)
vpmulhw %ymm15, %ymm6, %ymm8
vpmulhw %ymm15, %ymm7, %ymm9
vpsraw $10, %ymm8, %ymm8
vpsraw $10, %ymm9, %ymm9
vpmullw %ymm14, %ymm8, %ymm8
vpmullw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm8
vpsubw %ymm9, %ymm7, %ymm9
vmovdqu %ymm8, 448(%r9)
vmovdqu %ymm9, 480(%r9)
addq $0x200, %r9
subq $0x01, %rax
jg L_mlkem_decapsulate_avx2_trans
vmovdqu mlkem_qinv(%rip), %ymm12
# Pointwise acc mont
movslq %r8d, %rax
# Base mul mont
leaq L_mlkem_avx2_zetas_basemul(%rip), %r10
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdx), %ymm4
vmovdqu 32(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r10), %ymm10
vmovdqu 32(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdx), %ymm4
vmovdqu 96(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r10), %ymm10
vmovdqu 96(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdx), %ymm4
vmovdqu 160(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r10), %ymm10
vmovdqu 160(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdx), %ymm4
vmovdqu 224(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r10), %ymm10
vmovdqu 224(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdx), %ymm4
vmovdqu 288(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r10), %ymm10
vmovdqu 288(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdx), %ymm4
vmovdqu 352(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r10), %ymm10
vmovdqu 352(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r10), %ymm10
vmovdqu 416(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdx), %ymm4
vmovdqu 480(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r10), %ymm10
vmovdqu 480(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rdi
addq $0x200, %rdx
subq $2, %rax
jz L_pointwise_acc_mont_end_decap
L_pointwise_acc_mont_start_decap:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %r10
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdx), %ymm4
vmovdqu 32(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r10), %ymm10
vmovdqu 32(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rsi), %ymm6
vmovdqu 32(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdx), %ymm4
vmovdqu 96(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r10), %ymm10
vmovdqu 96(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rsi), %ymm6
vmovdqu 96(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdx), %ymm4
vmovdqu 160(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r10), %ymm10
vmovdqu 160(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rsi), %ymm6
vmovdqu 160(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdx), %ymm4
vmovdqu 224(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r10), %ymm10
vmovdqu 224(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdx), %ymm4
vmovdqu 288(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r10), %ymm10
vmovdqu 288(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rsi), %ymm6
vmovdqu 288(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdx), %ymm4
vmovdqu 352(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r10), %ymm10
vmovdqu 352(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r10), %ymm10
vmovdqu 416(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rsi), %ymm6
vmovdqu 416(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdx), %ymm4
vmovdqu 480(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r10), %ymm10
vmovdqu 480(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rdi
addq $0x200, %rdx
subq $0x01, %rax
jg L_pointwise_acc_mont_start_decap
L_pointwise_acc_mont_end_decap:
# Base mul mont add
leaq L_mlkem_avx2_zetas_basemul(%rip), %r10
vmovdqu (%rdi), %ymm2
vmovdqu 32(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu (%rdx), %ymm4
vmovdqu 32(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu (%r10), %ymm10
vmovdqu 32(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu (%rsi), %ymm6
vmovdqu 32(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 64(%rdx), %ymm4
vmovdqu 96(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 64(%r10), %ymm10
vmovdqu 96(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 64(%rsi), %ymm6
vmovdqu 96(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm1, 96(%rsi)
vmovdqu 128(%rdi), %ymm2
vmovdqu 160(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 128(%rdx), %ymm4
vmovdqu 160(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 128(%r10), %ymm10
vmovdqu 160(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 128(%rsi), %ymm6
vmovdqu 160(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu 192(%rdi), %ymm2
vmovdqu 224(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 192(%rdx), %ymm4
vmovdqu 224(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 192(%r10), %ymm10
vmovdqu 224(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 192(%rsi)
vmovdqu %ymm1, 224(%rsi)
vmovdqu 256(%rdi), %ymm2
vmovdqu 288(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 256(%rdx), %ymm4
vmovdqu 288(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 256(%r10), %ymm10
vmovdqu 288(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 256(%rsi), %ymm6
vmovdqu 288(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 320(%rdx), %ymm4
vmovdqu 352(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 320(%r10), %ymm10
vmovdqu 352(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 320(%rsi)
vmovdqu %ymm1, 352(%rsi)
vmovdqu 384(%rdi), %ymm2
vmovdqu 416(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 384(%rdx), %ymm4
vmovdqu 416(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 384(%r10), %ymm10
vmovdqu 416(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 384(%rsi), %ymm6
vmovdqu 416(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vpslld $16, %ymm3, %ymm6
vpsrld $16, %ymm2, %ymm7
vpblendw $0xaa, %ymm6, %ymm2, %ymm2
vpblendw $0x55, %ymm7, %ymm3, %ymm3
vmovdqu 448(%rdx), %ymm4
vmovdqu 480(%rdx), %ymm5
vpslld $16, %ymm5, %ymm6
vpsrld $16, %ymm4, %ymm7
vpblendw $0xaa, %ymm6, %ymm4, %ymm4
vpblendw $0x55, %ymm7, %ymm5, %ymm5
vmovdqu 448(%r10), %ymm10
vmovdqu 480(%r10), %ymm11
vpmullw %ymm5, %ymm3, %ymm0
vpmulhw %ymm5, %ymm3, %ymm6
vpmullw %ymm4, %ymm2, %ymm1
vpmulhw %ymm4, %ymm2, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm0, %ymm8
vpmullw %ymm12, %ymm1, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm0
vpsubw %ymm9, %ymm7, %ymm1
vpmullw %ymm11, %ymm0, %ymm6
vpmulhw %ymm10, %ymm0, %ymm7
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm6, %ymm7, %ymm0
vpaddw %ymm1, %ymm0, %ymm0
vpmullw %ymm5, %ymm2, %ymm1
vpmulhw %ymm5, %ymm2, %ymm6
vpmullw %ymm4, %ymm3, %ymm2
vpmulhw %ymm4, %ymm3, %ymm7
# Mont Reduce
vpmullw %ymm12, %ymm1, %ymm8
vpmullw %ymm12, %ymm2, %ymm9
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm1
vpsubw %ymm9, %ymm7, %ymm2
vpaddw %ymm2, %ymm1, %ymm1
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
vpaddw %ymm6, %ymm0, %ymm0
vpaddw %ymm7, %ymm1, %ymm1
vpslld $16, %ymm1, %ymm6
vpsrld $16, %ymm0, %ymm7
vpblendw $0xaa, %ymm6, %ymm0, %ymm0
vpblendw $0x55, %ymm7, %ymm1, %ymm1
vmovdqu %ymm0, 448(%rsi)
vmovdqu %ymm1, 480(%rsi)
addq $0x200, %rdi
# invntt
leaq L_mlkem_avx2_zetas_inv(%rip), %r10
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 128(%rsi), %ymm4
vmovdqu 160(%rsi), %ymm5
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
# 2: 1/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu (%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 32(%r10), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 64(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 96(%r10), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 1/2
vmovdqu 128(%r10), %ymm10
vmovdqu 160(%r10), %ymm12
vmovdqu 192(%r10), %ymm11
vmovdqu 224(%r10), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 1/2
vmovdqu 256(%r10), %ymm10
vmovdqu 288(%r10), %ymm12
vmovdqu 320(%r10), %ymm11
vmovdqu 352(%r10), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 1/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 384(%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 416(%r10), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 448(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 480(%r10), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 1/2
vmovdqu 512(%r10), %ymm10
vmovdqu 544(%r10), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 1/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 576(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 608(%r10), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 640(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 672(%r10), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 1/2
vmovdqu 704(%r10), %ymm10
vmovdqu 736(%r10), %ymm12
vmovdqu 768(%r10), %ymm11
vmovdqu 800(%r10), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 1/2
vmovdqu 832(%r10), %ymm10
vmovdqu 864(%r10), %ymm12
vmovdqu 896(%r10), %ymm11
vmovdqu 928(%r10), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 1/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 960(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 992(%r10), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 1024(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 1056(%r10), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 1/2
vmovdqu 1088(%r10), %ymm10
vmovdqu 1120(%r10), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 1/2
vmovdqu 1152(%r10), %ymm10
vmovdqu 1184(%r10), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu %ymm4, 128(%rsi)
vmovdqu %ymm5, 160(%rsi)
vmovdqu %ymm6, 192(%rsi)
vmovdqu %ymm7, 224(%rsi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vmovdqu 320(%rsi), %ymm2
vmovdqu 352(%rsi), %ymm3
vmovdqu 384(%rsi), %ymm4
vmovdqu 416(%rsi), %ymm5
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
# 2: 2/2
vperm2i128 $32, %ymm1, %ymm0, %ymm8
vmovdqu 1216(%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm0, %ymm9
vmovdqu 1248(%r10), %ymm12
vpsllq $32, %ymm9, %ymm0
vpsrlq $32, %ymm8, %ymm1
vpblendd $0xaa, %ymm0, %ymm8, %ymm0
vpblendd $0x55, %ymm1, %ymm9, %ymm1
vperm2i128 $32, %ymm3, %ymm2, %ymm8
vmovdqu 1280(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm2, %ymm9
vmovdqu 1312(%r10), %ymm13
vpsllq $32, %ymm9, %ymm2
vpsrlq $32, %ymm8, %ymm3
vpblendd $0xaa, %ymm2, %ymm8, %ymm2
vpblendd $0x55, %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 4: 2/2
vmovdqu 1344(%r10), %ymm10
vmovdqu 1376(%r10), %ymm12
vmovdqu 1408(%r10), %ymm11
vmovdqu 1440(%r10), %ymm13
vpunpckldq %ymm1, %ymm8, %ymm0
vpunpckhdq %ymm1, %ymm8, %ymm1
vpunpckldq %ymm3, %ymm9, %ymm2
vpunpckhdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 8: 2/2
vmovdqu 1472(%r10), %ymm10
vmovdqu 1504(%r10), %ymm12
vmovdqu 1536(%r10), %ymm11
vmovdqu 1568(%r10), %ymm13
vpunpcklqdq %ymm1, %ymm8, %ymm0
vpunpckhqdq %ymm1, %ymm8, %ymm1
vpunpcklqdq %ymm3, %ymm9, %ymm2
vpunpckhqdq %ymm3, %ymm9, %ymm3
vpaddw %ymm1, %ymm0, %ymm8
vpaddw %ymm3, %ymm2, %ymm9
vpsubw %ymm1, %ymm0, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm2
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm2, %ymm2
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm8, %ymm8
vpsubw %ymm2, %ymm9, %ymm9
vpmullw %ymm12, %ymm1, %ymm0
vpmullw %ymm13, %ymm3, %ymm2
vpmulhw %ymm10, %ymm1, %ymm1
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm0, %ymm0
vpmulhw %ymm14, %ymm2, %ymm2
vpsubw %ymm0, %ymm1, %ymm1
vpsubw %ymm2, %ymm3, %ymm3
# 16: 2/2
vperm2i128 $32, %ymm1, %ymm8, %ymm0
vmovdqu 1600(%r10), %ymm10
vperm2i128 $49, %ymm1, %ymm8, %ymm1
vmovdqu 1632(%r10), %ymm12
vperm2i128 $32, %ymm3, %ymm9, %ymm2
vmovdqu 1664(%r10), %ymm11
vperm2i128 $49, %ymm3, %ymm9, %ymm3
vmovdqu 1696(%r10), %ymm13
vpsubw %ymm1, %ymm0, %ymm8
vpsubw %ymm3, %ymm2, %ymm9
vpaddw %ymm1, %ymm0, %ymm0
vpaddw %ymm3, %ymm2, %ymm2
vpmullw %ymm12, %ymm8, %ymm1
vpmullw %ymm13, %ymm9, %ymm3
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm1, %ymm1
vpmulhw %ymm14, %ymm3, %ymm3
vpsubw %ymm1, %ymm8, %ymm1
vpsubw %ymm3, %ymm9, %ymm3
# 32: 2/2
vmovdqu 1728(%r10), %ymm10
vmovdqu 1760(%r10), %ymm12
vpaddw %ymm2, %ymm0, %ymm8
vpaddw %ymm3, %ymm1, %ymm9
vpsubw %ymm2, %ymm0, %ymm2
vpsubw %ymm3, %ymm1, %ymm3
vpmulhw %ymm15, %ymm8, %ymm0
vpmulhw %ymm15, %ymm9, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm8, %ymm0
vpsubw %ymm1, %ymm9, %ymm1
vpmullw %ymm12, %ymm2, %ymm8
vpmullw %ymm12, %ymm3, %ymm9
vpmulhw %ymm10, %ymm2, %ymm2
vpmulhw %ymm10, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
# 2: 2/2
vperm2i128 $32, %ymm5, %ymm4, %ymm8
vmovdqu 1792(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm4, %ymm9
vmovdqu 1824(%r10), %ymm12
vpsllq $32, %ymm9, %ymm4
vpsrlq $32, %ymm8, %ymm5
vpblendd $0xaa, %ymm4, %ymm8, %ymm4
vpblendd $0x55, %ymm5, %ymm9, %ymm5
vperm2i128 $32, %ymm7, %ymm6, %ymm8
vmovdqu 1856(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm6, %ymm9
vmovdqu 1888(%r10), %ymm13
vpsllq $32, %ymm9, %ymm6
vpsrlq $32, %ymm8, %ymm7
vpblendd $0xaa, %ymm6, %ymm8, %ymm6
vpblendd $0x55, %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 4: 2/2
vmovdqu 1920(%r10), %ymm10
vmovdqu 1952(%r10), %ymm12
vmovdqu 1984(%r10), %ymm11
vmovdqu 2016(%r10), %ymm13
vpunpckldq %ymm5, %ymm8, %ymm4
vpunpckhdq %ymm5, %ymm8, %ymm5
vpunpckldq %ymm7, %ymm9, %ymm6
vpunpckhdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 8: 2/2
vmovdqu 2048(%r10), %ymm10
vmovdqu 2080(%r10), %ymm12
vmovdqu 2112(%r10), %ymm11
vmovdqu 2144(%r10), %ymm13
vpunpcklqdq %ymm5, %ymm8, %ymm4
vpunpckhqdq %ymm5, %ymm8, %ymm5
vpunpcklqdq %ymm7, %ymm9, %ymm6
vpunpckhqdq %ymm7, %ymm9, %ymm7
vpaddw %ymm5, %ymm4, %ymm8
vpaddw %ymm7, %ymm6, %ymm9
vpsubw %ymm5, %ymm4, %ymm5
vpsubw %ymm7, %ymm6, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm6
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm6, %ymm6
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm8, %ymm8
vpsubw %ymm6, %ymm9, %ymm9
vpmullw %ymm12, %ymm5, %ymm4
vpmullw %ymm13, %ymm7, %ymm6
vpmulhw %ymm10, %ymm5, %ymm5
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm6, %ymm6
vpsubw %ymm4, %ymm5, %ymm5
vpsubw %ymm6, %ymm7, %ymm7
# 16: 2/2
vperm2i128 $32, %ymm5, %ymm8, %ymm4
vmovdqu 2176(%r10), %ymm10
vperm2i128 $49, %ymm5, %ymm8, %ymm5
vmovdqu 2208(%r10), %ymm12
vperm2i128 $32, %ymm7, %ymm9, %ymm6
vmovdqu 2240(%r10), %ymm11
vperm2i128 $49, %ymm7, %ymm9, %ymm7
vmovdqu 2272(%r10), %ymm13
vpsubw %ymm5, %ymm4, %ymm8
vpsubw %ymm7, %ymm6, %ymm9
vpaddw %ymm5, %ymm4, %ymm4
vpaddw %ymm7, %ymm6, %ymm6
vpmullw %ymm12, %ymm8, %ymm5
vpmullw %ymm13, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm11, %ymm9, %ymm9
vpmulhw %ymm14, %ymm5, %ymm5
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm5, %ymm8, %ymm5
vpsubw %ymm7, %ymm9, %ymm7
# 32: 2/2
vmovdqu 2304(%r10), %ymm10
vmovdqu 2336(%r10), %ymm12
vpaddw %ymm6, %ymm4, %ymm8
vpaddw %ymm7, %ymm5, %ymm9
vpsubw %ymm6, %ymm4, %ymm6
vpsubw %ymm7, %ymm5, %ymm7
vpmulhw %ymm15, %ymm8, %ymm4
vpmulhw %ymm15, %ymm9, %ymm5
vpsraw $10, %ymm4, %ymm4
vpsraw $10, %ymm5, %ymm5
vpmullw %ymm14, %ymm4, %ymm4
vpmullw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
# 64: 2/2
vmovdqu 2368(%r10), %ymm10
vmovdqu 2400(%r10), %ymm12
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpsubw %ymm6, %ymm2, %ymm8
vpsubw %ymm7, %ymm3, %ymm9
vpaddw %ymm6, %ymm2, %ymm2
vpaddw %ymm7, %ymm3, %ymm3
vpmullw %ymm12, %ymm8, %ymm6
vpmullw %ymm12, %ymm9, %ymm7
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm6, %ymm6
vpmulhw %ymm14, %ymm7, %ymm7
vpsubw %ymm6, %ymm8, %ymm6
vpsubw %ymm7, %ymm9, %ymm7
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu %ymm2, 320(%rsi)
vmovdqu %ymm3, 352(%rsi)
# 128
vmovdqu 2432(%r10), %ymm10
vmovdqu 2464(%r10), %ymm12
vmovdqu 2496(%r10), %ymm11
vmovdqu 2528(%r10), %ymm13
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm1
vmovdqu 192(%rsi), %ymm2
vmovdqu 224(%rsi), %ymm3
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu %ymm2, 192(%rsi)
vmovdqu %ymm3, 224(%rsi)
vmovdqu %ymm4, 384(%rsi)
vmovdqu %ymm5, 416(%rsi)
vmovdqu %ymm6, 448(%rsi)
vmovdqu %ymm7, 480(%rsi)
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 256(%rsi), %ymm4
vmovdqu 288(%rsi), %ymm5
vmovdqu 320(%rsi), %ymm6
vmovdqu 352(%rsi), %ymm7
vpsubw %ymm4, %ymm0, %ymm8
vpsubw %ymm5, %ymm1, %ymm9
vpaddw %ymm4, %ymm0, %ymm0
vpaddw %ymm5, %ymm1, %ymm1
vpmullw %ymm12, %ymm8, %ymm4
vpmullw %ymm12, %ymm9, %ymm5
vpmulhw %ymm10, %ymm8, %ymm8
vpmulhw %ymm10, %ymm9, %ymm9
vpmulhw %ymm14, %ymm4, %ymm4
vpmulhw %ymm14, %ymm5, %ymm5
vpsubw %ymm4, %ymm8, %ymm4
vpsubw %ymm5, %ymm9, %ymm5
vpaddw %ymm6, %ymm2, %ymm8
vpaddw %ymm7, %ymm3, %ymm9
vpsubw %ymm6, %ymm2, %ymm6
vpsubw %ymm7, %ymm3, %ymm7
vpmulhw %ymm15, %ymm8, %ymm2
vpmulhw %ymm15, %ymm9, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm8, %ymm2
vpsubw %ymm3, %ymm9, %ymm3
vpmullw %ymm12, %ymm6, %ymm8
vpmullw %ymm12, %ymm7, %ymm9
vpmulhw %ymm10, %ymm6, %ymm6
vpmulhw %ymm10, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vpmullw %ymm13, %ymm0, %ymm8
vpmullw %ymm13, %ymm1, %ymm9
vpmulhw %ymm11, %ymm0, %ymm0
vpmulhw %ymm11, %ymm1, %ymm1
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm0, %ymm0
vpsubw %ymm9, %ymm1, %ymm1
vpmullw %ymm13, %ymm2, %ymm8
vpmullw %ymm13, %ymm3, %ymm9
vpmulhw %ymm11, %ymm2, %ymm2
vpmulhw %ymm11, %ymm3, %ymm3
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm2, %ymm2
vpsubw %ymm9, %ymm3, %ymm3
vpmullw %ymm13, %ymm4, %ymm8
vpmullw %ymm13, %ymm5, %ymm9
vpmulhw %ymm11, %ymm4, %ymm4
vpmulhw %ymm11, %ymm5, %ymm5
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm4, %ymm4
vpsubw %ymm9, %ymm5, %ymm5
vpmullw %ymm13, %ymm6, %ymm8
vpmullw %ymm13, %ymm7, %ymm9
vpmulhw %ymm11, %ymm6, %ymm6
vpmulhw %ymm11, %ymm7, %ymm7
vpmulhw %ymm14, %ymm8, %ymm8
vpmulhw %ymm14, %ymm9, %ymm9
vpsubw %ymm8, %ymm6, %ymm6
vpsubw %ymm9, %ymm7, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu %ymm4, 256(%rsi)
vmovdqu %ymm5, 288(%rsi)
vmovdqu %ymm6, 320(%rsi)
vmovdqu %ymm7, 352(%rsi)
# Sub Errors
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu (%rcx), %ymm4
vmovdqu 32(%rcx), %ymm5
vmovdqu 64(%rcx), %ymm6
vmovdqu 96(%rcx), %ymm7
vpsubw %ymm0, %ymm4, %ymm4
vpsubw %ymm1, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpsubw %ymm2, %ymm6, %ymm6
vpsubw %ymm3, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm1, 32(%rsi)
vmovdqu %ymm2, 64(%rsi)
vmovdqu %ymm3, 96(%rsi)
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm1
vmovdqu 192(%rsi), %ymm2
vmovdqu 224(%rsi), %ymm3
vmovdqu 128(%rcx), %ymm4
vmovdqu 160(%rcx), %ymm5
vmovdqu 192(%rcx), %ymm6
vmovdqu 224(%rcx), %ymm7
vpsubw %ymm0, %ymm4, %ymm4
vpsubw %ymm1, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpsubw %ymm2, %ymm6, %ymm6
vpsubw %ymm3, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 128(%rsi)
vmovdqu %ymm1, 160(%rsi)
vmovdqu %ymm2, 192(%rsi)
vmovdqu %ymm3, 224(%rsi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vmovdqu 320(%rsi), %ymm2
vmovdqu 352(%rsi), %ymm3
vmovdqu 256(%rcx), %ymm4
vmovdqu 288(%rcx), %ymm5
vmovdqu 320(%rcx), %ymm6
vmovdqu 352(%rcx), %ymm7
vpsubw %ymm0, %ymm4, %ymm4
vpsubw %ymm1, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpsubw %ymm2, %ymm6, %ymm6
vpsubw %ymm3, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 256(%rsi)
vmovdqu %ymm1, 288(%rsi)
vmovdqu %ymm2, 320(%rsi)
vmovdqu %ymm3, 352(%rsi)
vmovdqu 384(%rsi), %ymm0
vmovdqu 416(%rsi), %ymm1
vmovdqu 448(%rsi), %ymm2
vmovdqu 480(%rsi), %ymm3
vmovdqu 384(%rcx), %ymm4
vmovdqu 416(%rcx), %ymm5
vmovdqu 448(%rcx), %ymm6
vmovdqu 480(%rcx), %ymm7
vpsubw %ymm0, %ymm4, %ymm4
vpsubw %ymm1, %ymm5, %ymm5
vpmulhw %ymm15, %ymm4, %ymm0
vpmulhw %ymm15, %ymm5, %ymm1
vpsraw $10, %ymm0, %ymm0
vpsraw $10, %ymm1, %ymm1
vpmullw %ymm14, %ymm0, %ymm0
vpmullw %ymm14, %ymm1, %ymm1
vpsubw %ymm0, %ymm4, %ymm0
vpsubw %ymm1, %ymm5, %ymm1
vpsubw %ymm2, %ymm6, %ymm6
vpsubw %ymm3, %ymm7, %ymm7
vpmulhw %ymm15, %ymm6, %ymm2
vpmulhw %ymm15, %ymm7, %ymm3
vpsraw $10, %ymm2, %ymm2
vpsraw $10, %ymm3, %ymm3
vpmullw %ymm14, %ymm2, %ymm2
vpmullw %ymm14, %ymm3, %ymm3
vpsubw %ymm2, %ymm6, %ymm2
vpsubw %ymm3, %ymm7, %ymm3
vmovdqu %ymm0, 384(%rsi)
vmovdqu %ymm1, 416(%rsi)
vmovdqu %ymm2, 448(%rsi)
vmovdqu %ymm3, 480(%rsi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_decapsulate_avx2,.-mlkem_decapsulate_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_csubq_avx2
.type mlkem_csubq_avx2,@function
.align 16
mlkem_csubq_avx2:
#else
.section __TEXT,__text
.globl _mlkem_csubq_avx2
.p2align 4
_mlkem_csubq_avx2:
#endif /* __APPLE__ */
vmovdqu mlkem_q(%rip), %ymm12
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vmovdqu 192(%rdi), %ymm6
vmovdqu 224(%rdi), %ymm7
vpsubw %ymm12, %ymm0, %ymm8
vpsubw %ymm12, %ymm1, %ymm9
vpsubw %ymm12, %ymm2, %ymm10
vpsubw %ymm12, %ymm3, %ymm11
vpsraw $15, %ymm8, %ymm0
vpsraw $15, %ymm9, %ymm1
vpsraw $15, %ymm10, %ymm2
vpsraw $15, %ymm11, %ymm3
vpand %ymm12, %ymm0, %ymm0
vpand %ymm12, %ymm1, %ymm1
vpand %ymm12, %ymm2, %ymm2
vpand %ymm12, %ymm3, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm10, %ymm2, %ymm2
vpaddw %ymm11, %ymm3, %ymm3
vpsubw %ymm12, %ymm4, %ymm8
vpsubw %ymm12, %ymm5, %ymm9
vpsubw %ymm12, %ymm6, %ymm10
vpsubw %ymm12, %ymm7, %ymm11
vpsraw $15, %ymm8, %ymm4
vpsraw $15, %ymm9, %ymm5
vpsraw $15, %ymm10, %ymm6
vpsraw $15, %ymm11, %ymm7
vpand %ymm12, %ymm4, %ymm4
vpand %ymm12, %ymm5, %ymm5
vpand %ymm12, %ymm6, %ymm6
vpand %ymm12, %ymm7, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpaddw %ymm10, %ymm6, %ymm6
vpaddw %ymm11, %ymm7, %ymm7
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm1, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vmovdqu %ymm4, 128(%rdi)
vmovdqu %ymm5, 160(%rdi)
vmovdqu %ymm6, 192(%rdi)
vmovdqu %ymm7, 224(%rdi)
vmovdqu 256(%rdi), %ymm0
vmovdqu 288(%rdi), %ymm1
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vmovdqu 448(%rdi), %ymm6
vmovdqu 480(%rdi), %ymm7
vpsubw %ymm12, %ymm0, %ymm8
vpsubw %ymm12, %ymm1, %ymm9
vpsubw %ymm12, %ymm2, %ymm10
vpsubw %ymm12, %ymm3, %ymm11
vpsraw $15, %ymm8, %ymm0
vpsraw $15, %ymm9, %ymm1
vpsraw $15, %ymm10, %ymm2
vpsraw $15, %ymm11, %ymm3
vpand %ymm12, %ymm0, %ymm0
vpand %ymm12, %ymm1, %ymm1
vpand %ymm12, %ymm2, %ymm2
vpand %ymm12, %ymm3, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm10, %ymm2, %ymm2
vpaddw %ymm11, %ymm3, %ymm3
vpsubw %ymm12, %ymm4, %ymm8
vpsubw %ymm12, %ymm5, %ymm9
vpsubw %ymm12, %ymm6, %ymm10
vpsubw %ymm12, %ymm7, %ymm11
vpsraw $15, %ymm8, %ymm4
vpsraw $15, %ymm9, %ymm5
vpsraw $15, %ymm10, %ymm6
vpsraw $15, %ymm11, %ymm7
vpand %ymm12, %ymm4, %ymm4
vpand %ymm12, %ymm5, %ymm5
vpand %ymm12, %ymm6, %ymm6
vpand %ymm12, %ymm7, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpaddw %ymm10, %ymm6, %ymm6
vpaddw %ymm11, %ymm7, %ymm7
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm1, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vmovdqu %ymm4, 384(%rdi)
vmovdqu %ymm5, 416(%rdi)
vmovdqu %ymm6, 448(%rdi)
vmovdqu %ymm7, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_csubq_avx2,.-mlkem_csubq_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_rej_idx:
.quad 0xffffffffffffffff,0xffffffffffffff00
.quad 0xffffffffffffff02,0xffffffffffff0200
.quad 0xffffffffffffff04,0xffffffffffff0400
.quad 0xffffffffffff0402,0xffffffffff040200
.quad 0xffffffffffffff06,0xffffffffffff0600
.quad 0xffffffffffff0602,0xffffffffff060200
.quad 0xffffffffffff0604,0xffffffffff060400
.quad 0xffffffffff060402,0xffffffff06040200
.quad 0xffffffffffffff08,0xffffffffffff0800
.quad 0xffffffffffff0802,0xffffffffff080200
.quad 0xffffffffffff0804,0xffffffffff080400
.quad 0xffffffffff080402,0xffffffff08040200
.quad 0xffffffffffff0806,0xffffffffff080600
.quad 0xffffffffff080602,0xffffffff08060200
.quad 0xffffffffff080604,0xffffffff08060400
.quad 0xffffffff08060402,0xffffff0806040200
.quad 0xffffffffffffff0a,0xffffffffffff0a00
.quad 0xffffffffffff0a02,0xffffffffff0a0200
.quad 0xffffffffffff0a04,0xffffffffff0a0400
.quad 0xffffffffff0a0402,0xffffffff0a040200
.quad 0xffffffffffff0a06,0xffffffffff0a0600
.quad 0xffffffffff0a0602,0xffffffff0a060200
.quad 0xffffffffff0a0604,0xffffffff0a060400
.quad 0xffffffff0a060402,0xffffff0a06040200
.quad 0xffffffffffff0a08,0xffffffffff0a0800
.quad 0xffffffffff0a0802,0xffffffff0a080200
.quad 0xffffffffff0a0804,0xffffffff0a080400
.quad 0xffffffff0a080402,0xffffff0a08040200
.quad 0xffffffffff0a0806,0xffffffff0a080600
.quad 0xffffffff0a080602,0xffffff0a08060200
.quad 0xffffffff0a080604,0xffffff0a08060400
.quad 0xffffff0a08060402,0xffff0a0806040200
.quad 0xffffffffffffff0c,0xffffffffffff0c00
.quad 0xffffffffffff0c02,0xffffffffff0c0200
.quad 0xffffffffffff0c04,0xffffffffff0c0400
.quad 0xffffffffff0c0402,0xffffffff0c040200
.quad 0xffffffffffff0c06,0xffffffffff0c0600
.quad 0xffffffffff0c0602,0xffffffff0c060200
.quad 0xffffffffff0c0604,0xffffffff0c060400
.quad 0xffffffff0c060402,0xffffff0c06040200
.quad 0xffffffffffff0c08,0xffffffffff0c0800
.quad 0xffffffffff0c0802,0xffffffff0c080200
.quad 0xffffffffff0c0804,0xffffffff0c080400
.quad 0xffffffff0c080402,0xffffff0c08040200
.quad 0xffffffffff0c0806,0xffffffff0c080600
.quad 0xffffffff0c080602,0xffffff0c08060200
.quad 0xffffffff0c080604,0xffffff0c08060400
.quad 0xffffff0c08060402,0xffff0c0806040200
.quad 0xffffffffffff0c0a,0xffffffffff0c0a00
.quad 0xffffffffff0c0a02,0xffffffff0c0a0200
.quad 0xffffffffff0c0a04,0xffffffff0c0a0400
.quad 0xffffffff0c0a0402,0xffffff0c0a040200
.quad 0xffffffffff0c0a06,0xffffffff0c0a0600
.quad 0xffffffff0c0a0602,0xffffff0c0a060200
.quad 0xffffffff0c0a0604,0xffffff0c0a060400
.quad 0xffffff0c0a060402,0xffff0c0a06040200
.quad 0xffffffffff0c0a08,0xffffffff0c0a0800
.quad 0xffffffff0c0a0802,0xffffff0c0a080200
.quad 0xffffffff0c0a0804,0xffffff0c0a080400
.quad 0xffffff0c0a080402,0xffff0c0a08040200
.quad 0xffffffff0c0a0806,0xffffff0c0a080600
.quad 0xffffff0c0a080602,0xffff0c0a08060200
.quad 0xffffff0c0a080604,0xffff0c0a08060400
.quad 0xffff0c0a08060402,0xff0c0a0806040200
.quad 0xffffffffffffff0e,0xffffffffffff0e00
.quad 0xffffffffffff0e02,0xffffffffff0e0200
.quad 0xffffffffffff0e04,0xffffffffff0e0400
.quad 0xffffffffff0e0402,0xffffffff0e040200
.quad 0xffffffffffff0e06,0xffffffffff0e0600
.quad 0xffffffffff0e0602,0xffffffff0e060200
.quad 0xffffffffff0e0604,0xffffffff0e060400
.quad 0xffffffff0e060402,0xffffff0e06040200
.quad 0xffffffffffff0e08,0xffffffffff0e0800
.quad 0xffffffffff0e0802,0xffffffff0e080200
.quad 0xffffffffff0e0804,0xffffffff0e080400
.quad 0xffffffff0e080402,0xffffff0e08040200
.quad 0xffffffffff0e0806,0xffffffff0e080600
.quad 0xffffffff0e080602,0xffffff0e08060200
.quad 0xffffffff0e080604,0xffffff0e08060400
.quad 0xffffff0e08060402,0xffff0e0806040200
.quad 0xffffffffffff0e0a,0xffffffffff0e0a00
.quad 0xffffffffff0e0a02,0xffffffff0e0a0200
.quad 0xffffffffff0e0a04,0xffffffff0e0a0400
.quad 0xffffffff0e0a0402,0xffffff0e0a040200
.quad 0xffffffffff0e0a06,0xffffffff0e0a0600
.quad 0xffffffff0e0a0602,0xffffff0e0a060200
.quad 0xffffffff0e0a0604,0xffffff0e0a060400
.quad 0xffffff0e0a060402,0xffff0e0a06040200
.quad 0xffffffffff0e0a08,0xffffffff0e0a0800
.quad 0xffffffff0e0a0802,0xffffff0e0a080200
.quad 0xffffffff0e0a0804,0xffffff0e0a080400
.quad 0xffffff0e0a080402,0xffff0e0a08040200
.quad 0xffffffff0e0a0806,0xffffff0e0a080600
.quad 0xffffff0e0a080602,0xffff0e0a08060200
.quad 0xffffff0e0a080604,0xffff0e0a08060400
.quad 0xffff0e0a08060402,0xff0e0a0806040200
.quad 0xffffffffffff0e0c,0xffffffffff0e0c00
.quad 0xffffffffff0e0c02,0xffffffff0e0c0200
.quad 0xffffffffff0e0c04,0xffffffff0e0c0400
.quad 0xffffffff0e0c0402,0xffffff0e0c040200
.quad 0xffffffffff0e0c06,0xffffffff0e0c0600
.quad 0xffffffff0e0c0602,0xffffff0e0c060200
.quad 0xffffffff0e0c0604,0xffffff0e0c060400
.quad 0xffffff0e0c060402,0xffff0e0c06040200
.quad 0xffffffffff0e0c08,0xffffffff0e0c0800
.quad 0xffffffff0e0c0802,0xffffff0e0c080200
.quad 0xffffffff0e0c0804,0xffffff0e0c080400
.quad 0xffffff0e0c080402,0xffff0e0c08040200
.quad 0xffffffff0e0c0806,0xffffff0e0c080600
.quad 0xffffff0e0c080602,0xffff0e0c08060200
.quad 0xffffff0e0c080604,0xffff0e0c08060400
.quad 0xffff0e0c08060402,0xff0e0c0806040200
.quad 0xffffffffff0e0c0a,0xffffffff0e0c0a00
.quad 0xffffffff0e0c0a02,0xffffff0e0c0a0200
.quad 0xffffffff0e0c0a04,0xffffff0e0c0a0400
.quad 0xffffff0e0c0a0402,0xffff0e0c0a040200
.quad 0xffffffff0e0c0a06,0xffffff0e0c0a0600
.quad 0xffffff0e0c0a0602,0xffff0e0c0a060200
.quad 0xffffff0e0c0a0604,0xffff0e0c0a060400
.quad 0xffff0e0c0a060402,0xff0e0c0a06040200
.quad 0xffffffff0e0c0a08,0xffffff0e0c0a0800
.quad 0xffffff0e0c0a0802,0xffff0e0c0a080200
.quad 0xffffff0e0c0a0804,0xffff0e0c0a080400
.quad 0xffff0e0c0a080402,0xff0e0c0a08040200
.quad 0xffffff0e0c0a0806,0xffff0e0c0a080600
.quad 0xffff0e0c0a080602,0xff0e0c0a08060200
.quad 0xffff0e0c0a080604,0xff0e0c0a08060400
.quad 0xff0e0c0a08060402,0x0e0c0a0806040200
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_rej_q:
.quad 0xd010d010d010d01, 0xd010d010d010d01
.quad 0xd010d010d010d01, 0xd010d010d010d01
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_rej_ones:
.quad 0x101010101010101, 0x101010101010101
.quad 0x101010101010101, 0x101010101010101
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_rej_mask:
.quad 0xfff0fff0fff0fff, 0xfff0fff0fff0fff
.quad 0xfff0fff0fff0fff, 0xfff0fff0fff0fff
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_rej_shuffle:
.quad 0x504040302010100, 0xb0a0a0908070706
.quad 0x908080706050504, 0xf0e0e0d0c0b0b0a
#ifndef __APPLE__
.text
.globl mlkem_rej_uniform_n_avx2
.type mlkem_rej_uniform_n_avx2,@function
.align 16
mlkem_rej_uniform_n_avx2:
#else
.section __TEXT,__text
.globl _mlkem_rej_uniform_n_avx2
.p2align 4
_mlkem_rej_uniform_n_avx2:
#endif /* __APPLE__ */
pushq %rbx
pushq %r12
pushq %r13
pushq %r14
pushq %r15
pushq %rbp
movq %rcx, %r8
movl %esi, %eax
vmovdqu L_mlkem_rej_q(%rip), %ymm6
vmovdqu L_mlkem_rej_ones(%rip), %ymm7
vmovdqu L_mlkem_rej_mask(%rip), %ymm8
vmovdqu L_mlkem_rej_shuffle(%rip), %ymm9
leaq L_mlkem_rej_idx(%rip), %r9
movq $0x1111111111111111, %r14
movq $0xe0c0a0806040200, %rbp
movq $0x101010101010101, %r13
vpermq $0x94, (%rdx), %ymm0
vpermq $0x94, 24(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 48(%rdx), %ymm0
vpermq $0x94, 72(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 96(%rdx), %ymm0
vpermq $0x94, 120(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 144(%rdx), %ymm0
vpermq $0x94, 168(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 192(%rdx), %ymm0
vpermq $0x94, 216(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 240(%rdx), %ymm0
vpermq $0x94, 264(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
vpermq $0x94, 288(%rdx), %ymm0
vpermq $0x94, 312(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
addq $0x150, %rdx
subl $0x150, %r8d
L_mlkem_rej_uniform_n_avx2_start_256:
vpermq $0x94, (%rdx), %ymm0
vpermq $0x94, 24(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
addq $48, %rdx
subl $48, %r8d
cmpl $48, %r8d
jl L_mlkem_rej_uniform_n_avx2_done_256
cmpl $32, %esi
jge L_mlkem_rej_uniform_n_avx2_start_256
L_mlkem_rej_uniform_n_avx2_done_256:
cmpl $8, %esi
jl L_mlkem_rej_uniform_n_avx2_done_128
cmpl $12, %r8d
jl L_mlkem_rej_uniform_n_avx2_done_128
L_mlkem_rej_uniform_n_avx2_start_128:
vmovdqu (%rdx), %xmm0
vpshufb %xmm9, %xmm0, %xmm0
vpsrlw $4, %xmm0, %xmm2
vpblendw $0xaa, %xmm2, %xmm0, %xmm0
vpand %xmm8, %xmm0, %xmm0
vpcmpgtw %xmm0, %xmm6, %xmm2
vpmovmskb %xmm2, %rbx
movq $0x5555, %r10
pextl %r10d, %ebx, %ebx
movq (%r9,%rbx,8), %xmm3
vpaddb %xmm7, %xmm3, %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3
vpshufb %xmm3, %xmm0, %xmm0
vmovdqu %xmm0, (%rdi)
popcntl %ebx, %ecx
leaq (%rdi,%rcx,2), %rdi
subl %ecx, %esi
addq $12, %rdx
subl $12, %r8d
cmpl $12, %r8d
jl L_mlkem_rej_uniform_n_avx2_done_128
cmpl $8, %esi
jge L_mlkem_rej_uniform_n_avx2_start_128
L_mlkem_rej_uniform_n_avx2_done_128:
cmpl $0x00, %r8d
je L_mlkem_rej_uniform_n_avx2_done_64
cmpl $0x00, %esi
je L_mlkem_rej_uniform_n_avx2_done_64
movq $0xfff0fff0fff0fff, %r15
movq $0x2000200020002000, %r10
movq $0xd010d010d010d01, %r11
movq $0x1000100010001000, %r12
L_mlkem_rej_uniform_n_avx2_start_64:
movq (%rdx), %rcx
pdepq %r15, %rcx, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_0_avx2_rej_large_0
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_n_avx2_done_64
L_mlkem_rej_uniform_0_avx2_rej_large_0:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_0_avx2_rej_large_1
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_n_avx2_done_64
L_mlkem_rej_uniform_0_avx2_rej_large_1:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_0_avx2_rej_large_2
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_n_avx2_done_64
L_mlkem_rej_uniform_0_avx2_rej_large_2:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_0_avx2_rej_large_3
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_n_avx2_done_64
L_mlkem_rej_uniform_0_avx2_rej_large_3:
addq $6, %rdx
subl $6, %r8d
jle L_mlkem_rej_uniform_n_avx2_done_64
cmpl $0x00, %esi
jg L_mlkem_rej_uniform_n_avx2_start_64
L_mlkem_rej_uniform_n_avx2_done_64:
vzeroupper
subl %esi, %eax
popq %rbp
popq %r15
popq %r14
popq %r13
popq %r12
popq %rbx
repz retq
#ifndef __APPLE__
.size mlkem_rej_uniform_n_avx2,.-mlkem_rej_uniform_n_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_rej_uniform_avx2
.type mlkem_rej_uniform_avx2,@function
.align 16
mlkem_rej_uniform_avx2:
#else
.section __TEXT,__text
.globl _mlkem_rej_uniform_avx2
.p2align 4
_mlkem_rej_uniform_avx2:
#endif /* __APPLE__ */
pushq %rbx
pushq %r12
pushq %r13
pushq %r14
pushq %r15
pushq %rbp
movq %rcx, %r8
movl %esi, %eax
cmpl $0x00, %esi
je L_mlkem_rej_uniform_avx2_done_64
cmpl $8, %esi
jl L_mlkem_rej_uniform_avx2_done_128
vmovdqu L_mlkem_rej_q(%rip), %ymm6
vmovdqu L_mlkem_rej_ones(%rip), %ymm7
vmovdqu L_mlkem_rej_mask(%rip), %ymm8
vmovdqu L_mlkem_rej_shuffle(%rip), %ymm9
leaq L_mlkem_rej_idx(%rip), %r9
movq $0x1111111111111111, %r14
movq $0xe0c0a0806040200, %rbp
movq $0x101010101010101, %r13
cmpl $32, %esi
jl L_mlkem_rej_uniform_avx2_done_256
vpermq $0x94, (%rdx), %ymm0
vpermq $0x94, 24(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
addq $48, %rdx
subl $48, %r8d
cmpl $32, %esi
jl L_mlkem_rej_uniform_avx2_done_256
vpermq $0x94, (%rdx), %ymm0
vpermq $0x94, 24(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
addq $48, %rdx
subl $48, %r8d
cmpl $32, %esi
jl L_mlkem_rej_uniform_avx2_done_256
L_mlkem_rej_uniform_avx2_start_256:
vpermq $0x94, (%rdx), %ymm0
vpermq $0x94, 24(%rdx), %ymm1
vpshufb %ymm9, %ymm0, %ymm0
vpshufb %ymm9, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpblendw $0xaa, %ymm2, %ymm0, %ymm0
vpblendw $0xaa, %ymm3, %ymm1, %ymm1
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpcmpgtw %ymm0, %ymm6, %ymm2
vpcmpgtw %ymm1, %ymm6, %ymm3
vpacksswb %ymm3, %ymm2, %ymm2
vpmovmskb %ymm2, %rbx
movzbl %bl, %r10d
movzbl %bh, %ecx
movq %rbx, %r11
movq %rbx, %r12
shrq $16, %r11
shrq $24, %r12
andq $0xff, %r11
andq $0xff, %r12
movq (%r9,%r10,8), %xmm2
movq (%r9,%rcx,8), %xmm3
movq (%r9,%r11,8), %xmm4
movq (%r9,%r12,8), %xmm5
vinserti128 $0x01, %xmm4, %ymm2, %ymm2
vinserti128 $0x01, %xmm5, %ymm3, %ymm3
vpaddb %ymm7, %ymm2, %ymm4
vpaddb %ymm7, %ymm3, %ymm5
vpunpcklbw %ymm4, %ymm2, %ymm2
vpunpcklbw %ymm5, %ymm3, %ymm3
vpshufb %ymm2, %ymm0, %ymm0
vpshufb %ymm3, %ymm1, %ymm1
movq %rbx, %r10
movq %rbx, %r11
movq %rbx, %r12
andq $0xff, %rbx
shrq $16, %r10
shrq $8, %r11
shrq $24, %r12
andq $0xff, %r10
andq $0xff, %r11
popcntl %ebx, %ebx
popcntl %r10d, %r10d
popcntl %r11d, %r11d
popcntl %r12d, %r12d
vmovdqu %xmm0, (%rdi)
vextracti128 $0x01, %ymm0, %xmm0
leaq (%rdi,%rbx,2), %rdi
subl %ebx, %esi
vmovdqu %xmm0, (%rdi)
leaq (%rdi,%r10,2), %rdi
subl %r10d, %esi
vmovdqu %xmm1, (%rdi)
vextracti128 $0x01, %ymm1, %xmm1
leaq (%rdi,%r11,2), %rdi
subl %r11d, %esi
vmovdqu %xmm1, (%rdi)
leaq (%rdi,%r12,2), %rdi
subl %r12d, %esi
addq $48, %rdx
subl $48, %r8d
cmpl $48, %r8d
jl L_mlkem_rej_uniform_avx2_done_256
cmpl $32, %esi
jge L_mlkem_rej_uniform_avx2_start_256
L_mlkem_rej_uniform_avx2_done_256:
cmpl $8, %esi
jl L_mlkem_rej_uniform_avx2_done_128
cmpl $12, %r8d
jl L_mlkem_rej_uniform_avx2_done_128
L_mlkem_rej_uniform_avx2_start_128:
vmovdqu (%rdx), %xmm0
vpshufb %xmm9, %xmm0, %xmm0
vpsrlw $4, %xmm0, %xmm2
vpblendw $0xaa, %xmm2, %xmm0, %xmm0
vpand %xmm8, %xmm0, %xmm0
vpcmpgtw %xmm0, %xmm6, %xmm2
vpmovmskb %xmm2, %rbx
movq $0x5555, %r10
pextl %r10d, %ebx, %ebx
movq (%r9,%rbx,8), %xmm3
vpaddb %xmm7, %xmm3, %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3
vpshufb %xmm3, %xmm0, %xmm0
vmovdqu %xmm0, (%rdi)
popcntl %ebx, %ecx
leaq (%rdi,%rcx,2), %rdi
subl %ecx, %esi
addq $12, %rdx
subl $12, %r8d
cmpl $12, %r8d
jl L_mlkem_rej_uniform_avx2_done_128
cmpl $8, %esi
jge L_mlkem_rej_uniform_avx2_start_128
L_mlkem_rej_uniform_avx2_done_128:
cmpl $0x00, %r8d
je L_mlkem_rej_uniform_avx2_done_64
cmpl $0x00, %esi
je L_mlkem_rej_uniform_avx2_done_64
movq $0xfff0fff0fff0fff, %r15
movq $0x2000200020002000, %r10
movq $0xd010d010d010d01, %r11
movq $0x1000100010001000, %r12
L_mlkem_rej_uniform_avx2_start_64:
movq (%rdx), %rcx
pdepq %r15, %rcx, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_avx2_rej_large_0
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_avx2_done_64
L_mlkem_rej_uniform_avx2_rej_large_0:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_avx2_rej_large_1
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_avx2_done_64
L_mlkem_rej_uniform_avx2_rej_large_1:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_avx2_rej_large_2
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_avx2_done_64
L_mlkem_rej_uniform_avx2_rej_large_2:
shrq $16, %rcx
cmpw $0xd01, %cx
jge L_mlkem_rej_uniform_avx2_rej_large_3
movw %cx, (%rdi)
addq $2, %rdi
subl $0x01, %esi
je L_mlkem_rej_uniform_avx2_done_64
L_mlkem_rej_uniform_avx2_rej_large_3:
addq $6, %rdx
subl $6, %r8d
jle L_mlkem_rej_uniform_avx2_done_64
cmpl $0x00, %esi
jg L_mlkem_rej_uniform_avx2_start_64
L_mlkem_rej_uniform_avx2_done_64:
vzeroupper
subl %esi, %eax
popq %rbp
popq %r15
popq %r14
popq %r13
popq %r12
popq %rbx
repz retq
#ifndef __APPLE__
.size mlkem_rej_uniform_avx2,.-mlkem_rej_uniform_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_249:
.quad 0x24924900249249, 0x24924900249249
.quad 0x24924900249249, 0x24924900249249
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_6db:
.quad 0x6db6db006db6db, 0x6db6db006db6db
.quad 0x6db6db006db6db, 0x6db6db006db6db
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_07:
.quad 0x700000007, 0x700000007
.quad 0x700000007, 0x700000007
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_70:
.quad 0x7000000070000, 0x7000000070000
.quad 0x7000000070000, 0x7000000070000
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_3:
.quad 0x3000300030003, 0x3000300030003
.quad 0x3000300030003, 0x3000300030003
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_shuff:
.quad 0xff050403ff020100, 0xff0b0a09ff080706
.quad 0xff090807ff060504, 0xff0f0e0dff0c0b0a
#ifndef __APPLE__
.text
.globl mlkem_cbd_eta3_avx2
.type mlkem_cbd_eta3_avx2,@function
.align 16
mlkem_cbd_eta3_avx2:
#else
.section __TEXT,__text
.globl _mlkem_cbd_eta3_avx2
.p2align 4
_mlkem_cbd_eta3_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_mask_249(%rip), %ymm8
vmovdqu L_mlkem_mask_6db(%rip), %ymm9
vmovdqu L_mlkem_mask_07(%rip), %ymm10
vmovdqu L_mlkem_mask_70(%rip), %ymm11
vmovdqu L_mlkem_mask_3(%rip), %ymm12
vmovdqu L_mlkem_shuff(%rip), %ymm13
vmovdqu (%rsi), %ymm0
vmovdqu 24(%rsi), %ymm1
vpermq $0x94, %ymm0, %ymm0
vpermq $0x94, %ymm1, %ymm1
vpshufb %ymm13, %ymm0, %ymm0
vpshufb %ymm13, %ymm1, %ymm1
vpsrld $0x01, %ymm0, %ymm2
vpsrld $0x01, %ymm1, %ymm3
vpsrld $2, %ymm0, %ymm4
vpsrld $2, %ymm1, %ymm5
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpaddd %ymm2, %ymm0, %ymm0
vpaddd %ymm3, %ymm1, %ymm1
vpaddd %ymm4, %ymm0, %ymm0
vpaddd %ymm5, %ymm1, %ymm1
vpsrld $3, %ymm0, %ymm2
vpsrld $3, %ymm1, %ymm3
vpaddd %ymm9, %ymm0, %ymm0
vpaddd %ymm9, %ymm1, %ymm1
vpsubd %ymm2, %ymm0, %ymm0
vpsubd %ymm3, %ymm1, %ymm1
vpslld $10, %ymm0, %ymm2
vpslld $10, %ymm1, %ymm3
vpsrld $12, %ymm0, %ymm4
vpsrld $12, %ymm1, %ymm5
vpsrld $2, %ymm0, %ymm6
vpsrld $2, %ymm1, %ymm7
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm10, %ymm4, %ymm4
vpand %ymm10, %ymm5, %ymm5
vpand %ymm11, %ymm6, %ymm6
vpand %ymm11, %ymm7, %ymm7
vpaddw %ymm2, %ymm0, %ymm0
vpaddw %ymm3, %ymm1, %ymm1
vpaddw %ymm6, %ymm4, %ymm2
vpaddw %ymm7, %ymm5, %ymm3
vpsubw %ymm12, %ymm0, %ymm0
vpsubw %ymm12, %ymm1, %ymm1
vpsubw %ymm12, %ymm2, %ymm2
vpsubw %ymm12, %ymm3, %ymm3
vpunpckldq %ymm2, %ymm0, %ymm4
vpunpckldq %ymm3, %ymm1, %ymm5
vpunpckhdq %ymm2, %ymm0, %ymm6
vpunpckhdq %ymm3, %ymm1, %ymm7
vperm2i128 $32, %ymm6, %ymm4, %ymm0
vperm2i128 $32, %ymm7, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm4, %ymm2
vperm2i128 $49, %ymm7, %ymm5, %ymm3
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm2, 32(%rdi)
vmovdqu %ymm1, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vmovdqu 48(%rsi), %ymm0
vmovdqu 72(%rsi), %ymm1
vpermq $0x94, %ymm0, %ymm0
vpermq $0x94, %ymm1, %ymm1
vpshufb %ymm13, %ymm0, %ymm0
vpshufb %ymm13, %ymm1, %ymm1
vpsrld $0x01, %ymm0, %ymm2
vpsrld $0x01, %ymm1, %ymm3
vpsrld $2, %ymm0, %ymm4
vpsrld $2, %ymm1, %ymm5
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpaddd %ymm2, %ymm0, %ymm0
vpaddd %ymm3, %ymm1, %ymm1
vpaddd %ymm4, %ymm0, %ymm0
vpaddd %ymm5, %ymm1, %ymm1
vpsrld $3, %ymm0, %ymm2
vpsrld $3, %ymm1, %ymm3
vpaddd %ymm9, %ymm0, %ymm0
vpaddd %ymm9, %ymm1, %ymm1
vpsubd %ymm2, %ymm0, %ymm0
vpsubd %ymm3, %ymm1, %ymm1
vpslld $10, %ymm0, %ymm2
vpslld $10, %ymm1, %ymm3
vpsrld $12, %ymm0, %ymm4
vpsrld $12, %ymm1, %ymm5
vpsrld $2, %ymm0, %ymm6
vpsrld $2, %ymm1, %ymm7
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm10, %ymm4, %ymm4
vpand %ymm10, %ymm5, %ymm5
vpand %ymm11, %ymm6, %ymm6
vpand %ymm11, %ymm7, %ymm7
vpaddw %ymm2, %ymm0, %ymm0
vpaddw %ymm3, %ymm1, %ymm1
vpaddw %ymm6, %ymm4, %ymm2
vpaddw %ymm7, %ymm5, %ymm3
vpsubw %ymm12, %ymm0, %ymm0
vpsubw %ymm12, %ymm1, %ymm1
vpsubw %ymm12, %ymm2, %ymm2
vpsubw %ymm12, %ymm3, %ymm3
vpunpckldq %ymm2, %ymm0, %ymm4
vpunpckldq %ymm3, %ymm1, %ymm5
vpunpckhdq %ymm2, %ymm0, %ymm6
vpunpckhdq %ymm3, %ymm1, %ymm7
vperm2i128 $32, %ymm6, %ymm4, %ymm0
vperm2i128 $32, %ymm7, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm4, %ymm2
vperm2i128 $49, %ymm7, %ymm5, %ymm3
vmovdqu %ymm0, 128(%rdi)
vmovdqu %ymm2, 160(%rdi)
vmovdqu %ymm1, 192(%rdi)
vmovdqu %ymm3, 224(%rdi)
vmovdqu 96(%rsi), %ymm0
vmovdqu 120(%rsi), %ymm1
vpermq $0x94, %ymm0, %ymm0
vpermq $0x94, %ymm1, %ymm1
vpshufb %ymm13, %ymm0, %ymm0
vpshufb %ymm13, %ymm1, %ymm1
vpsrld $0x01, %ymm0, %ymm2
vpsrld $0x01, %ymm1, %ymm3
vpsrld $2, %ymm0, %ymm4
vpsrld $2, %ymm1, %ymm5
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpaddd %ymm2, %ymm0, %ymm0
vpaddd %ymm3, %ymm1, %ymm1
vpaddd %ymm4, %ymm0, %ymm0
vpaddd %ymm5, %ymm1, %ymm1
vpsrld $3, %ymm0, %ymm2
vpsrld $3, %ymm1, %ymm3
vpaddd %ymm9, %ymm0, %ymm0
vpaddd %ymm9, %ymm1, %ymm1
vpsubd %ymm2, %ymm0, %ymm0
vpsubd %ymm3, %ymm1, %ymm1
vpslld $10, %ymm0, %ymm2
vpslld $10, %ymm1, %ymm3
vpsrld $12, %ymm0, %ymm4
vpsrld $12, %ymm1, %ymm5
vpsrld $2, %ymm0, %ymm6
vpsrld $2, %ymm1, %ymm7
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm10, %ymm4, %ymm4
vpand %ymm10, %ymm5, %ymm5
vpand %ymm11, %ymm6, %ymm6
vpand %ymm11, %ymm7, %ymm7
vpaddw %ymm2, %ymm0, %ymm0
vpaddw %ymm3, %ymm1, %ymm1
vpaddw %ymm6, %ymm4, %ymm2
vpaddw %ymm7, %ymm5, %ymm3
vpsubw %ymm12, %ymm0, %ymm0
vpsubw %ymm12, %ymm1, %ymm1
vpsubw %ymm12, %ymm2, %ymm2
vpsubw %ymm12, %ymm3, %ymm3
vpunpckldq %ymm2, %ymm0, %ymm4
vpunpckldq %ymm3, %ymm1, %ymm5
vpunpckhdq %ymm2, %ymm0, %ymm6
vpunpckhdq %ymm3, %ymm1, %ymm7
vperm2i128 $32, %ymm6, %ymm4, %ymm0
vperm2i128 $32, %ymm7, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm4, %ymm2
vperm2i128 $49, %ymm7, %ymm5, %ymm3
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm2, 288(%rdi)
vmovdqu %ymm1, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vmovdqu 144(%rsi), %ymm0
vmovdqu 168(%rsi), %ymm1
vpermq $0x94, %ymm0, %ymm0
vpermq $0x94, %ymm1, %ymm1
vpshufb %ymm13, %ymm0, %ymm0
vpshufb %ymm13, %ymm1, %ymm1
vpsrld $0x01, %ymm0, %ymm2
vpsrld $0x01, %ymm1, %ymm3
vpsrld $2, %ymm0, %ymm4
vpsrld $2, %ymm1, %ymm5
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpaddd %ymm2, %ymm0, %ymm0
vpaddd %ymm3, %ymm1, %ymm1
vpaddd %ymm4, %ymm0, %ymm0
vpaddd %ymm5, %ymm1, %ymm1
vpsrld $3, %ymm0, %ymm2
vpsrld $3, %ymm1, %ymm3
vpaddd %ymm9, %ymm0, %ymm0
vpaddd %ymm9, %ymm1, %ymm1
vpsubd %ymm2, %ymm0, %ymm0
vpsubd %ymm3, %ymm1, %ymm1
vpslld $10, %ymm0, %ymm2
vpslld $10, %ymm1, %ymm3
vpsrld $12, %ymm0, %ymm4
vpsrld $12, %ymm1, %ymm5
vpsrld $2, %ymm0, %ymm6
vpsrld $2, %ymm1, %ymm7
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm10, %ymm4, %ymm4
vpand %ymm10, %ymm5, %ymm5
vpand %ymm11, %ymm6, %ymm6
vpand %ymm11, %ymm7, %ymm7
vpaddw %ymm2, %ymm0, %ymm0
vpaddw %ymm3, %ymm1, %ymm1
vpaddw %ymm6, %ymm4, %ymm2
vpaddw %ymm7, %ymm5, %ymm3
vpsubw %ymm12, %ymm0, %ymm0
vpsubw %ymm12, %ymm1, %ymm1
vpsubw %ymm12, %ymm2, %ymm2
vpsubw %ymm12, %ymm3, %ymm3
vpunpckldq %ymm2, %ymm0, %ymm4
vpunpckldq %ymm3, %ymm1, %ymm5
vpunpckhdq %ymm2, %ymm0, %ymm6
vpunpckhdq %ymm3, %ymm1, %ymm7
vperm2i128 $32, %ymm6, %ymm4, %ymm0
vperm2i128 $32, %ymm7, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm4, %ymm2
vperm2i128 $49, %ymm7, %ymm5, %ymm3
vmovdqu %ymm0, 384(%rdi)
vmovdqu %ymm2, 416(%rdi)
vmovdqu %ymm1, 448(%rdi)
vmovdqu %ymm3, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_cbd_eta3_avx2,.-mlkem_cbd_eta3_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_55:
.quad 0x5555555555555555, 0x5555555555555555
.quad 0x5555555555555555, 0x5555555555555555
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_33:
.quad 0x3333333333333333, 0x3333333333333333
.quad 0x3333333333333333, 0x3333333333333333
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_03:
.quad 0x303030303030303, 0x303030303030303
.quad 0x303030303030303, 0x303030303030303
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_mask_0f:
.quad 0xf0f0f0f0f0f0f0f, 0xf0f0f0f0f0f0f0f
.quad 0xf0f0f0f0f0f0f0f, 0xf0f0f0f0f0f0f0f
#ifndef __APPLE__
.text
.globl mlkem_cbd_eta2_avx2
.type mlkem_cbd_eta2_avx2,@function
.align 16
mlkem_cbd_eta2_avx2:
#else
.section __TEXT,__text
.globl _mlkem_cbd_eta2_avx2
.p2align 4
_mlkem_cbd_eta2_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_mask_55(%rip), %ymm8
vmovdqu L_mlkem_mask_33(%rip), %ymm9
vmovdqu L_mlkem_mask_03(%rip), %ymm10
vmovdqu L_mlkem_mask_0f(%rip), %ymm11
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vpsrlw $0x01, %ymm0, %ymm2
vpsrlw $0x01, %ymm1, %ymm3
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpaddb %ymm2, %ymm0, %ymm0
vpaddb %ymm3, %ymm1, %ymm1
vpsrlw $2, %ymm0, %ymm2
vpsrlw $2, %ymm1, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpaddb %ymm9, %ymm0, %ymm0
vpaddb %ymm9, %ymm1, %ymm1
vpsubb %ymm2, %ymm0, %ymm0
vpsubb %ymm3, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpand %ymm11, %ymm0, %ymm0
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpsubb %ymm10, %ymm0, %ymm0
vpsubb %ymm10, %ymm1, %ymm1
vpsubb %ymm10, %ymm2, %ymm2
vpsubb %ymm10, %ymm3, %ymm3
vpunpcklbw %ymm2, %ymm0, %ymm4
vpunpcklbw %ymm3, %ymm1, %ymm5
vpunpckhbw %ymm2, %ymm0, %ymm6
vpunpckhbw %ymm3, %ymm1, %ymm7
vpmovsxbw %xmm4, %ymm0
vpmovsxbw %xmm5, %ymm1
vextracti128 $0x01, %ymm4, %xmm2
vextracti128 $0x01, %ymm5, %xmm3
vpmovsxbw %xmm2, %ymm2
vpmovsxbw %xmm3, %ymm3
vpmovsxbw %xmm6, %ymm4
vpmovsxbw %xmm7, %ymm5
vextracti128 $0x01, %ymm6, %xmm6
vextracti128 $0x01, %ymm7, %xmm7
vpmovsxbw %xmm6, %ymm6
vpmovsxbw %xmm7, %ymm7
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm4, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm6, 96(%rdi)
vmovdqu %ymm1, 128(%rdi)
vmovdqu %ymm5, 160(%rdi)
vmovdqu %ymm3, 192(%rdi)
vmovdqu %ymm7, 224(%rdi)
vmovdqu 64(%rsi), %ymm0
vmovdqu 96(%rsi), %ymm1
vpsrlw $0x01, %ymm0, %ymm2
vpsrlw $0x01, %ymm1, %ymm3
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpaddb %ymm2, %ymm0, %ymm0
vpaddb %ymm3, %ymm1, %ymm1
vpsrlw $2, %ymm0, %ymm2
vpsrlw $2, %ymm1, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpaddb %ymm9, %ymm0, %ymm0
vpaddb %ymm9, %ymm1, %ymm1
vpsubb %ymm2, %ymm0, %ymm0
vpsubb %ymm3, %ymm1, %ymm1
vpsrlw $4, %ymm0, %ymm2
vpsrlw $4, %ymm1, %ymm3
vpand %ymm11, %ymm0, %ymm0
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpsubb %ymm10, %ymm0, %ymm0
vpsubb %ymm10, %ymm1, %ymm1
vpsubb %ymm10, %ymm2, %ymm2
vpsubb %ymm10, %ymm3, %ymm3
vpunpcklbw %ymm2, %ymm0, %ymm4
vpunpcklbw %ymm3, %ymm1, %ymm5
vpunpckhbw %ymm2, %ymm0, %ymm6
vpunpckhbw %ymm3, %ymm1, %ymm7
vpmovsxbw %xmm4, %ymm0
vpmovsxbw %xmm5, %ymm1
vextracti128 $0x01, %ymm4, %xmm2
vextracti128 $0x01, %ymm5, %xmm3
vpmovsxbw %xmm2, %ymm2
vpmovsxbw %xmm3, %ymm3
vpmovsxbw %xmm6, %ymm4
vpmovsxbw %xmm7, %ymm5
vextracti128 $0x01, %ymm6, %xmm6
vextracti128 $0x01, %ymm7, %xmm7
vpmovsxbw %xmm6, %ymm6
vpmovsxbw %xmm7, %ymm7
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm4, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm6, 352(%rdi)
vmovdqu %ymm1, 384(%rdi)
vmovdqu %ymm5, 416(%rdi)
vmovdqu %ymm3, 448(%rdi)
vmovdqu %ymm7, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_cbd_eta2_avx2,.-mlkem_cbd_eta2_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_mask:
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
.value 0x03ff,0x03ff
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_shift:
.quad 0x400000104000001, 0x400000104000001
.quad 0x400000104000001, 0x400000104000001
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_shlv:
.quad 0xc, 0xc
.quad 0xc, 0xc
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_shuf:
.value 0x100,0x302
.value 0x804,0xa09
.value 0xc0b,0xffff
.value 0xffff,0xffff
.value 0xa09,0xc0b
.value 0xffff,0xffff
.value 0xffff,0x100
.value 0x302,0x804
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_v:
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_offset:
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_10_avx2_shift12:
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
.value 0x1000,0x1000
#ifndef __APPLE__
.text
.globl mlkem_compress_10_avx2
.type mlkem_compress_10_avx2,@function
.align 16
mlkem_compress_10_avx2:
#else
.section __TEXT,__text
.globl _mlkem_compress_10_avx2
.p2align 4
_mlkem_compress_10_avx2:
#endif /* __APPLE__ */
vmovdqu (%rsi), %ymm0
vmovdqu L_mlkem_compress_10_avx2_mask(%rip), %ymm9
vmovdqu L_mlkem_compress_10_avx2_shift(%rip), %ymm8
vmovdqu L_mlkem_compress_10_avx2_shlv(%rip), %ymm10
vmovdqu L_mlkem_compress_10_avx2_shuf(%rip), %ymm11
vmovdqu L_mlkem_compress_10_avx2_v(%rip), %ymm6
vmovdqu L_mlkem_compress_10_avx2_offset(%rip), %ymm12
vmovdqu L_mlkem_compress_10_avx2_shift12(%rip), %ymm13
vpsllw $3, %ymm6, %ymm7
L_mlkem_compress_10_avx2_start:
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, (%rdi)
vmovdqu %xmm1, 20(%rdi)
vmovss %xmm2, 16(%rdi)
vmovss %xmm4, 36(%rdi)
vmovdqu 64(%rsi), %ymm0
vmovdqu 96(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 40(%rdi)
vmovdqu %xmm1, 60(%rdi)
vmovss %xmm2, 56(%rdi)
vmovss %xmm4, 76(%rdi)
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 80(%rdi)
vmovdqu %xmm1, 100(%rdi)
vmovss %xmm2, 96(%rdi)
vmovss %xmm4, 116(%rdi)
vmovdqu 192(%rsi), %ymm0
vmovdqu 224(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 120(%rdi)
vmovdqu %xmm1, 140(%rdi)
vmovss %xmm2, 136(%rdi)
vmovss %xmm4, 156(%rdi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 160(%rdi)
vmovdqu %xmm1, 180(%rdi)
vmovss %xmm2, 176(%rdi)
vmovss %xmm4, 196(%rdi)
vmovdqu 320(%rsi), %ymm0
vmovdqu 352(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 200(%rdi)
vmovdqu %xmm1, 220(%rdi)
vmovss %xmm2, 216(%rdi)
vmovss %xmm4, 236(%rdi)
vmovdqu 384(%rsi), %ymm0
vmovdqu 416(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 240(%rdi)
vmovdqu %xmm1, 260(%rdi)
vmovss %xmm2, 256(%rdi)
vmovss %xmm4, 276(%rdi)
vmovdqu 448(%rsi), %ymm0
vmovdqu 480(%rsi), %ymm1
vpmullw %ymm7, %ymm0, %ymm2
vpmullw %ymm7, %ymm1, %ymm4
vpaddw %ymm12, %ymm0, %ymm3
vpaddw %ymm12, %ymm1, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm1, %ymm1
vpmulhuw %ymm6, %ymm0, %ymm0
vpmulhuw %ymm6, %ymm1, %ymm1
vpsubw %ymm3, %ymm2, %ymm3
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm3, %ymm2, %ymm2
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm2, %ymm2
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm2, %ymm0, %ymm0
vpsubw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm13, %ymm0, %ymm0
vpmulhrsw %ymm13, %ymm1, %ymm1
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpmaddwd %ymm8, %ymm0, %ymm0
vpmaddwd %ymm8, %ymm1, %ymm1
vpsllvd %ymm10, %ymm0, %ymm0
vpsllvd %ymm10, %ymm1, %ymm1
vpsrlq $12, %ymm0, %ymm0
vpsrlq $12, %ymm1, %ymm1
vpshufb %ymm11, %ymm0, %ymm0
vpshufb %ymm11, %ymm1, %ymm1
vextracti128 $0x01, %ymm0, %xmm2
vextracti128 $0x01, %ymm1, %xmm4
vpblendw $0xe0, %xmm2, %xmm0, %xmm0
vpblendw $0xe0, %xmm4, %xmm1, %xmm1
vmovdqu %xmm0, 280(%rdi)
vmovdqu %xmm1, 300(%rdi)
vmovss %xmm2, 296(%rdi)
vmovss %xmm4, 316(%rdi)
addq $0x140, %rdi
addq $0x200, %rsi
subl $0x01, %edx
jg L_mlkem_compress_10_avx2_start
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_compress_10_avx2,.-mlkem_compress_10_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_decompress_10_avx2_mask:
.long 0x7fe01ff8,0x7fe01ff8,0x7fe01ff8,0x7fe01ff8
.long 0x7fe01ff8,0x7fe01ff8,0x7fe01ff8,0x7fe01ff8
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_decompress_10_avx2_sllv:
.quad 0x4, 0x4
.quad 0x4, 0x4
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_decompress_10_avx2_q:
.long 0x0d013404,0x0d013404,0x0d013404,0x0d013404
.long 0x0d013404,0x0d013404,0x0d013404,0x0d013404
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_10_avx2_shuf:
.value 0x100,0x201
.value 0x302,0x403
.value 0x605,0x706
.value 0x807,0x908
.value 0x302,0x403
.value 0x504,0x605
.value 0x807,0x908
.value 0xa09,0xb0a
#ifndef __APPLE__
.text
.globl mlkem_decompress_10_avx2
.type mlkem_decompress_10_avx2,@function
.align 16
mlkem_decompress_10_avx2:
#else
.section __TEXT,__text
.globl _mlkem_decompress_10_avx2
.p2align 4
_mlkem_decompress_10_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_decompress_10_avx2_mask(%rip), %ymm4
vmovdqu L_mlkem_decompress_10_avx2_q(%rip), %ymm5
vmovdqu L_mlkem_decompress_10_avx2_shuf(%rip), %ymm6
vmovdqu L_mlkem_decompress_10_avx2_sllv(%rip), %ymm7
L_mlkem_decompress_10_avx2_start:
vpermq $0x94, (%rsi), %ymm0
vpermq $0x94, 20(%rsi), %ymm1
vpermq $0x94, 40(%rsi), %ymm2
vpermq $0x94, 60(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpsllvd %ymm7, %ymm0, %ymm0
vpsllvd %ymm7, %ymm1, %ymm1
vpsllvd %ymm7, %ymm2, %ymm2
vpsllvd %ymm7, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm5, %ymm0, %ymm0
vpmulhrsw %ymm5, %ymm1, %ymm1
vpmulhrsw %ymm5, %ymm2, %ymm2
vpmulhrsw %ymm5, %ymm3, %ymm3
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm1, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vpermq $0x94, 80(%rsi), %ymm0
vpermq $0x94, 100(%rsi), %ymm1
vpermq $0x94, 120(%rsi), %ymm2
vpermq $0x94, 140(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpsllvd %ymm7, %ymm0, %ymm0
vpsllvd %ymm7, %ymm1, %ymm1
vpsllvd %ymm7, %ymm2, %ymm2
vpsllvd %ymm7, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm5, %ymm0, %ymm0
vpmulhrsw %ymm5, %ymm1, %ymm1
vpmulhrsw %ymm5, %ymm2, %ymm2
vpmulhrsw %ymm5, %ymm3, %ymm3
vmovdqu %ymm0, 128(%rdi)
vmovdqu %ymm1, 160(%rdi)
vmovdqu %ymm2, 192(%rdi)
vmovdqu %ymm3, 224(%rdi)
vpermq $0x94, 160(%rsi), %ymm0
vpermq $0x94, 180(%rsi), %ymm1
vpermq $0x94, 200(%rsi), %ymm2
vpermq $0x94, 220(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpsllvd %ymm7, %ymm0, %ymm0
vpsllvd %ymm7, %ymm1, %ymm1
vpsllvd %ymm7, %ymm2, %ymm2
vpsllvd %ymm7, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm5, %ymm0, %ymm0
vpmulhrsw %ymm5, %ymm1, %ymm1
vpmulhrsw %ymm5, %ymm2, %ymm2
vpmulhrsw %ymm5, %ymm3, %ymm3
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm1, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vpermq $0x94, 240(%rsi), %ymm0
vpermq $0x94, 260(%rsi), %ymm1
vpermq $0x94, 280(%rsi), %ymm2
vpermq $0x94, 300(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpsllvd %ymm7, %ymm0, %ymm0
vpsllvd %ymm7, %ymm1, %ymm1
vpsllvd %ymm7, %ymm2, %ymm2
vpsllvd %ymm7, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm5, %ymm0, %ymm0
vpmulhrsw %ymm5, %ymm1, %ymm1
vpmulhrsw %ymm5, %ymm2, %ymm2
vpmulhrsw %ymm5, %ymm3, %ymm3
vmovdqu %ymm0, 384(%rdi)
vmovdqu %ymm1, 416(%rdi)
vmovdqu %ymm2, 448(%rdi)
vmovdqu %ymm3, 480(%rdi)
addq $0x140, %rsi
addq $0x200, %rdi
subl $0x01, %edx
jg L_mlkem_decompress_10_avx2_start
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_decompress_10_avx2,.-mlkem_decompress_10_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_v:
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_off:
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
.value 0x0024,0x0024
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_shift13:
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
.value 0x2000,0x2000
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_mask:
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
.value 0x07ff,0x07ff
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_shift:
.quad 0x800000108000001, 0x800000108000001
.quad 0x800000108000001, 0x800000108000001
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_sllvd:
.long 0x0000000a,0x00000000,0x0000000a,0x00000000
.long 0x0000000a,0x00000000,0x0000000a,0x00000000
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_srlvq:
.quad 0xa, 0x1e
.quad 0xa, 0x1e
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_11_avx2_shuf:
.value 0x100,0x302
.value 0x504,0x706
.value 0x908,0xff0a
.value 0xffff,0xffff
.value 0x605,0x807
.value 0xa09,0xffff
.value 0xffff,0x0
.value 0x201,0x403
#ifndef __APPLE__
.text
.globl mlkem_compress_11_avx2
.type mlkem_compress_11_avx2,@function
.align 16
mlkem_compress_11_avx2:
#else
.section __TEXT,__text
.globl _mlkem_compress_11_avx2
.p2align 4
_mlkem_compress_11_avx2:
#endif /* __APPLE__ */
vmovdqu (%rsi), %ymm0
vmovdqu L_mlkem_compress_11_avx2_v(%rip), %ymm7
vmovdqu L_mlkem_compress_11_avx2_off(%rip), %ymm8
vmovdqu L_mlkem_compress_11_avx2_shift13(%rip), %ymm9
vmovdqu L_mlkem_compress_11_avx2_mask(%rip), %ymm10
vmovdqu L_mlkem_compress_11_avx2_shift(%rip), %ymm11
vmovdqu L_mlkem_compress_11_avx2_sllvd(%rip), %ymm12
vmovdqu L_mlkem_compress_11_avx2_srlvq(%rip), %ymm13
vmovdqu L_mlkem_compress_11_avx2_shuf(%rip), %ymm14
vpsllw $3, %ymm7, %ymm6
L_mlkem_compress_11_avx2_start:
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, (%rdi)
vmovq %xmm1, 16(%rdi)
vmovdqu %xmm3, 22(%rdi)
vmovq %xmm4, 38(%rdi)
vmovdqu 64(%rsi), %ymm0
vmovdqu 96(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 44(%rdi)
vmovq %xmm1, 60(%rdi)
vmovdqu %xmm3, 66(%rdi)
vmovq %xmm4, 82(%rdi)
vmovdqu 128(%rsi), %ymm0
vmovdqu 160(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 88(%rdi)
vmovq %xmm1, 104(%rdi)
vmovdqu %xmm3, 110(%rdi)
vmovq %xmm4, 126(%rdi)
vmovdqu 192(%rsi), %ymm0
vmovdqu 224(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 132(%rdi)
vmovq %xmm1, 148(%rdi)
vmovdqu %xmm3, 154(%rdi)
vmovq %xmm4, 170(%rdi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 176(%rdi)
vmovq %xmm1, 192(%rdi)
vmovdqu %xmm3, 198(%rdi)
vmovq %xmm4, 214(%rdi)
vmovdqu 320(%rsi), %ymm0
vmovdqu 352(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 220(%rdi)
vmovq %xmm1, 236(%rdi)
vmovdqu %xmm3, 242(%rdi)
vmovq %xmm4, 258(%rdi)
vmovdqu 384(%rsi), %ymm0
vmovdqu 416(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 264(%rdi)
vmovq %xmm1, 280(%rdi)
vmovdqu %xmm3, 286(%rdi)
vmovq %xmm4, 302(%rdi)
vmovdqu 448(%rsi), %ymm0
vmovdqu 480(%rsi), %ymm3
vpmullw %ymm6, %ymm0, %ymm1
vpmullw %ymm6, %ymm3, %ymm4
vpaddw %ymm8, %ymm0, %ymm2
vpaddw %ymm8, %ymm3, %ymm5
vpsllw $3, %ymm0, %ymm0
vpsllw $3, %ymm3, %ymm3
vpmulhw %ymm7, %ymm0, %ymm0
vpmulhw %ymm7, %ymm3, %ymm3
vpsubw %ymm2, %ymm1, %ymm2
vpsubw %ymm5, %ymm4, %ymm5
vpandn %ymm2, %ymm1, %ymm1
vpandn %ymm5, %ymm4, %ymm4
vpsrlw $15, %ymm1, %ymm1
vpsrlw $15, %ymm4, %ymm4
vpsubw %ymm1, %ymm0, %ymm0
vpsubw %ymm4, %ymm3, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm10, %ymm0, %ymm0
vpand %ymm10, %ymm3, %ymm3
vpmaddwd %ymm11, %ymm0, %ymm0
vpmaddwd %ymm11, %ymm3, %ymm3
vpsllvd %ymm12, %ymm0, %ymm0
vpsllvd %ymm12, %ymm3, %ymm3
vpsrldq $8, %ymm0, %ymm1
vpsrldq $8, %ymm3, %ymm4
vpsrlvq %ymm13, %ymm0, %ymm0
vpsrlvq %ymm13, %ymm3, %ymm3
vpsllq $34, %ymm1, %ymm1
vpsllq $34, %ymm4, %ymm4
vpaddq %ymm1, %ymm0, %ymm0
vpaddq %ymm4, %ymm3, %ymm3
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm3, %ymm3
vextracti128 $0x01, %ymm0, %xmm1
vextracti128 $0x01, %ymm3, %xmm4
vpblendvb %xmm14, %xmm1, %xmm0, %xmm0
vpblendvb %xmm14, %xmm4, %xmm3, %xmm3
vmovdqu %xmm0, 308(%rdi)
vmovq %xmm1, 324(%rdi)
vmovdqu %xmm3, 330(%rdi)
vmovq %xmm4, 346(%rdi)
addq $0x160, %rdi
addq $0x200, %rsi
subl $0x01, %edx
jg L_mlkem_compress_11_avx2_start
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_compress_11_avx2,.-mlkem_compress_11_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_q:
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_shuf:
.value 0x100,0x201
.value 0x302,0x504
.value 0x605,0x706
.value 0x908,0xa09
.value 0x403,0x504
.value 0x605,0x807
.value 0x908,0xa09
.value 0xc0b,0xd0c
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_sllv:
.long 0x00000000,0x00000001,0x00000000,0x00000000
.long 0x00000000,0x00000001,0x00000000,0x00000000
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_srlv:
.quad 0x0, 0x2
.quad 0x0, 0x2
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_shift:
.value 0x0020,0x0004
.value 0x0001,0x0020
.value 0x0008,0x0001
.value 0x0020,0x0004
.value 0x0020,0x0004
.value 0x0001,0x0020
.value 0x0008,0x0001
.value 0x0020,0x0004
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_11_avx2_mask:
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
.value 0x7ff0,0x7ff0
#ifndef __APPLE__
.text
.globl mlkem_decompress_11_avx2
.type mlkem_decompress_11_avx2,@function
.align 16
mlkem_decompress_11_avx2:
#else
.section __TEXT,__text
.globl _mlkem_decompress_11_avx2
.p2align 4
_mlkem_decompress_11_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_decompress_11_avx2_q(%rip), %ymm4
vmovdqu L_mlkem_decompress_11_avx2_shuf(%rip), %ymm5
vmovdqu L_mlkem_decompress_11_avx2_sllv(%rip), %ymm6
vmovdqu L_mlkem_decompress_11_avx2_srlv(%rip), %ymm7
vmovdqu L_mlkem_decompress_11_avx2_shift(%rip), %ymm8
vmovdqu L_mlkem_decompress_11_avx2_mask(%rip), %ymm9
L_mlkem_decompress_11_avx2_start:
vpermq $0x94, (%rsi), %ymm0
vpermq $0x94, 22(%rsi), %ymm1
vpermq $0x94, 44(%rsi), %ymm2
vpermq $0x94, 66(%rsi), %ymm3
vpshufb %ymm5, %ymm0, %ymm0
vpshufb %ymm5, %ymm1, %ymm1
vpshufb %ymm5, %ymm2, %ymm2
vpshufb %ymm5, %ymm3, %ymm3
vpsrlvd %ymm6, %ymm0, %ymm0
vpsrlvd %ymm6, %ymm1, %ymm1
vpsrlvd %ymm6, %ymm2, %ymm2
vpsrlvd %ymm6, %ymm3, %ymm3
vpsrlvq %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm1, %ymm1
vpsrlvq %ymm7, %ymm2, %ymm2
vpsrlvq %ymm7, %ymm3, %ymm3
vpmullw %ymm8, %ymm0, %ymm0
vpmullw %ymm8, %ymm1, %ymm1
vpmullw %ymm8, %ymm2, %ymm2
vpmullw %ymm8, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpmulhrsw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm4, %ymm2, %ymm2
vpmulhrsw %ymm4, %ymm3, %ymm3
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm1, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vpermq $0x94, 88(%rsi), %ymm0
vpermq $0x94, 110(%rsi), %ymm1
vpermq $0x94, 132(%rsi), %ymm2
vpermq $0x94, 154(%rsi), %ymm3
vpshufb %ymm5, %ymm0, %ymm0
vpshufb %ymm5, %ymm1, %ymm1
vpshufb %ymm5, %ymm2, %ymm2
vpshufb %ymm5, %ymm3, %ymm3
vpsrlvd %ymm6, %ymm0, %ymm0
vpsrlvd %ymm6, %ymm1, %ymm1
vpsrlvd %ymm6, %ymm2, %ymm2
vpsrlvd %ymm6, %ymm3, %ymm3
vpsrlvq %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm1, %ymm1
vpsrlvq %ymm7, %ymm2, %ymm2
vpsrlvq %ymm7, %ymm3, %ymm3
vpmullw %ymm8, %ymm0, %ymm0
vpmullw %ymm8, %ymm1, %ymm1
vpmullw %ymm8, %ymm2, %ymm2
vpmullw %ymm8, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpmulhrsw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm4, %ymm2, %ymm2
vpmulhrsw %ymm4, %ymm3, %ymm3
vmovdqu %ymm0, 128(%rdi)
vmovdqu %ymm1, 160(%rdi)
vmovdqu %ymm2, 192(%rdi)
vmovdqu %ymm3, 224(%rdi)
vpermq $0x94, 176(%rsi), %ymm0
vpermq $0x94, 198(%rsi), %ymm1
vpermq $0x94, 220(%rsi), %ymm2
vpermq $0x94, 242(%rsi), %ymm3
vpshufb %ymm5, %ymm0, %ymm0
vpshufb %ymm5, %ymm1, %ymm1
vpshufb %ymm5, %ymm2, %ymm2
vpshufb %ymm5, %ymm3, %ymm3
vpsrlvd %ymm6, %ymm0, %ymm0
vpsrlvd %ymm6, %ymm1, %ymm1
vpsrlvd %ymm6, %ymm2, %ymm2
vpsrlvd %ymm6, %ymm3, %ymm3
vpsrlvq %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm1, %ymm1
vpsrlvq %ymm7, %ymm2, %ymm2
vpsrlvq %ymm7, %ymm3, %ymm3
vpmullw %ymm8, %ymm0, %ymm0
vpmullw %ymm8, %ymm1, %ymm1
vpmullw %ymm8, %ymm2, %ymm2
vpmullw %ymm8, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpmulhrsw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm4, %ymm2, %ymm2
vpmulhrsw %ymm4, %ymm3, %ymm3
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm1, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vpermq $0x94, 264(%rsi), %ymm0
vpermq $0x94, 286(%rsi), %ymm1
vpermq $0x94, 308(%rsi), %ymm2
vpermq $0x94, 330(%rsi), %ymm3
vpshufb %ymm5, %ymm0, %ymm0
vpshufb %ymm5, %ymm1, %ymm1
vpshufb %ymm5, %ymm2, %ymm2
vpshufb %ymm5, %ymm3, %ymm3
vpsrlvd %ymm6, %ymm0, %ymm0
vpsrlvd %ymm6, %ymm1, %ymm1
vpsrlvd %ymm6, %ymm2, %ymm2
vpsrlvd %ymm6, %ymm3, %ymm3
vpsrlvq %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm1, %ymm1
vpsrlvq %ymm7, %ymm2, %ymm2
vpsrlvq %ymm7, %ymm3, %ymm3
vpmullw %ymm8, %ymm0, %ymm0
vpmullw %ymm8, %ymm1, %ymm1
vpmullw %ymm8, %ymm2, %ymm2
vpmullw %ymm8, %ymm3, %ymm3
vpsrlw $0x01, %ymm0, %ymm0
vpsrlw $0x01, %ymm1, %ymm1
vpsrlw $0x01, %ymm2, %ymm2
vpsrlw $0x01, %ymm3, %ymm3
vpand %ymm9, %ymm0, %ymm0
vpand %ymm9, %ymm1, %ymm1
vpand %ymm9, %ymm2, %ymm2
vpand %ymm9, %ymm3, %ymm3
vpmulhrsw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm4, %ymm1, %ymm1
vpmulhrsw %ymm4, %ymm2, %ymm2
vpmulhrsw %ymm4, %ymm3, %ymm3
vmovdqu %ymm0, 384(%rdi)
vmovdqu %ymm1, 416(%rdi)
vmovdqu %ymm2, 448(%rdi)
vmovdqu %ymm3, 480(%rdi)
addq $0x160, %rsi
addq $0x200, %rdi
subl $0x01, %edx
jg L_mlkem_decompress_11_avx2_start
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_decompress_11_avx2,.-mlkem_decompress_11_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_4_avx2_mask:
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
.value 0x000f,0x000f
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_4_avx2_shift:
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
.value 0x0200,0x0200
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_compress_4_avx2_perm:
.long 0x00000000,0x00000004,0x00000001,0x00000005
.long 0x00000002,0x00000006,0x00000003,0x00000007
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_4_avx2_v:
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_4_avx2_shift12:
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
.value 0x1001,0x1001
#ifndef __APPLE__
.text
.globl mlkem_compress_4_avx2
.type mlkem_compress_4_avx2,@function
.align 16
mlkem_compress_4_avx2:
#else
.section __TEXT,__text
.globl _mlkem_compress_4_avx2
.p2align 4
_mlkem_compress_4_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_compress_4_avx2_mask(%rip), %ymm8
vmovdqu L_mlkem_compress_4_avx2_shift(%rip), %ymm9
vmovdqu L_mlkem_compress_4_avx2_perm(%rip), %ymm10
vmovdqu L_mlkem_compress_4_avx2_v(%rip), %ymm11
vmovdqu L_mlkem_compress_4_avx2_shift12(%rip), %ymm12
vpmulhw (%rsi), %ymm11, %ymm0
vpmulhw 32(%rsi), %ymm11, %ymm1
vpmulhw 64(%rsi), %ymm11, %ymm2
vpmulhw 96(%rsi), %ymm11, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm1, %ymm1
vpmulhrsw %ymm9, %ymm2, %ymm2
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpackuswb %ymm1, %ymm0, %ymm0
vpackuswb %ymm3, %ymm2, %ymm2
vpmaddubsw %ymm12, %ymm0, %ymm0
vpmaddubsw %ymm12, %ymm2, %ymm2
vpackuswb %ymm2, %ymm0, %ymm0
vpmulhw 128(%rsi), %ymm11, %ymm4
vpmulhw 160(%rsi), %ymm11, %ymm5
vpmulhw 192(%rsi), %ymm11, %ymm6
vpmulhw 224(%rsi), %ymm11, %ymm7
vpmulhrsw %ymm9, %ymm4, %ymm4
vpmulhrsw %ymm9, %ymm5, %ymm5
vpmulhrsw %ymm9, %ymm6, %ymm6
vpmulhrsw %ymm9, %ymm7, %ymm7
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpand %ymm8, %ymm6, %ymm6
vpand %ymm8, %ymm7, %ymm7
vpackuswb %ymm5, %ymm4, %ymm4
vpackuswb %ymm7, %ymm6, %ymm6
vpmaddubsw %ymm12, %ymm4, %ymm4
vpmaddubsw %ymm12, %ymm6, %ymm6
vpackuswb %ymm6, %ymm4, %ymm4
vpermd %ymm0, %ymm10, %ymm0
vpermd %ymm4, %ymm10, %ymm4
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm4, 32(%rdi)
vpmulhw 256(%rsi), %ymm11, %ymm0
vpmulhw 288(%rsi), %ymm11, %ymm1
vpmulhw 320(%rsi), %ymm11, %ymm2
vpmulhw 352(%rsi), %ymm11, %ymm3
vpmulhrsw %ymm9, %ymm0, %ymm0
vpmulhrsw %ymm9, %ymm1, %ymm1
vpmulhrsw %ymm9, %ymm2, %ymm2
vpmulhrsw %ymm9, %ymm3, %ymm3
vpand %ymm8, %ymm0, %ymm0
vpand %ymm8, %ymm1, %ymm1
vpand %ymm8, %ymm2, %ymm2
vpand %ymm8, %ymm3, %ymm3
vpackuswb %ymm1, %ymm0, %ymm0
vpackuswb %ymm3, %ymm2, %ymm2
vpmaddubsw %ymm12, %ymm0, %ymm0
vpmaddubsw %ymm12, %ymm2, %ymm2
vpackuswb %ymm2, %ymm0, %ymm0
vpmulhw 384(%rsi), %ymm11, %ymm4
vpmulhw 416(%rsi), %ymm11, %ymm5
vpmulhw 448(%rsi), %ymm11, %ymm6
vpmulhw 480(%rsi), %ymm11, %ymm7
vpmulhrsw %ymm9, %ymm4, %ymm4
vpmulhrsw %ymm9, %ymm5, %ymm5
vpmulhrsw %ymm9, %ymm6, %ymm6
vpmulhrsw %ymm9, %ymm7, %ymm7
vpand %ymm8, %ymm4, %ymm4
vpand %ymm8, %ymm5, %ymm5
vpand %ymm8, %ymm6, %ymm6
vpand %ymm8, %ymm7, %ymm7
vpackuswb %ymm5, %ymm4, %ymm4
vpackuswb %ymm7, %ymm6, %ymm6
vpmaddubsw %ymm12, %ymm4, %ymm4
vpmaddubsw %ymm12, %ymm6, %ymm6
vpackuswb %ymm6, %ymm4, %ymm4
vpermd %ymm0, %ymm10, %ymm0
vpermd %ymm4, %ymm10, %ymm4
vmovdqu %ymm0, 64(%rdi)
vmovdqu %ymm4, 96(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_compress_4_avx2,.-mlkem_compress_4_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_decompress_4_avx2_mask:
.long 0x00f0000f,0x00f0000f,0x00f0000f,0x00f0000f
.long 0x00f0000f,0x00f0000f,0x00f0000f,0x00f0000f
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_decompress_4_avx2_shift:
.long 0x00800800,0x00800800,0x00800800,0x00800800
.long 0x00800800,0x00800800,0x00800800,0x00800800
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_4_avx2_q:
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_4_avx2_shuf:
.value 0x0,0x0
.value 0x101,0x101
.value 0x202,0x202
.value 0x303,0x303
.value 0x404,0x404
.value 0x505,0x505
.value 0x606,0x606
.value 0x707,0x707
#ifndef __APPLE__
.text
.globl mlkem_decompress_4_avx2
.type mlkem_decompress_4_avx2,@function
.align 16
mlkem_decompress_4_avx2:
#else
.section __TEXT,__text
.globl _mlkem_decompress_4_avx2
.p2align 4
_mlkem_decompress_4_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_decompress_4_avx2_mask(%rip), %ymm4
vmovdqu L_mlkem_decompress_4_avx2_shift(%rip), %ymm5
vmovdqu L_mlkem_decompress_4_avx2_shuf(%rip), %ymm6
vmovdqu L_mlkem_decompress_4_avx2_q(%rip), %ymm7
vpbroadcastq (%rsi), %ymm0
vpbroadcastq 8(%rsi), %ymm1
vpbroadcastq 16(%rsi), %ymm2
vpbroadcastq 24(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmullw %ymm5, %ymm0, %ymm0
vpmullw %ymm5, %ymm1, %ymm1
vpmullw %ymm5, %ymm2, %ymm2
vpmullw %ymm5, %ymm3, %ymm3
vpmulhrsw %ymm7, %ymm0, %ymm0
vpmulhrsw %ymm7, %ymm1, %ymm1
vpmulhrsw %ymm7, %ymm2, %ymm2
vpmulhrsw %ymm7, %ymm3, %ymm3
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm1, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vpbroadcastq 32(%rsi), %ymm0
vpbroadcastq 40(%rsi), %ymm1
vpbroadcastq 48(%rsi), %ymm2
vpbroadcastq 56(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmullw %ymm5, %ymm0, %ymm0
vpmullw %ymm5, %ymm1, %ymm1
vpmullw %ymm5, %ymm2, %ymm2
vpmullw %ymm5, %ymm3, %ymm3
vpmulhrsw %ymm7, %ymm0, %ymm0
vpmulhrsw %ymm7, %ymm1, %ymm1
vpmulhrsw %ymm7, %ymm2, %ymm2
vpmulhrsw %ymm7, %ymm3, %ymm3
vmovdqu %ymm0, 128(%rdi)
vmovdqu %ymm1, 160(%rdi)
vmovdqu %ymm2, 192(%rdi)
vmovdqu %ymm3, 224(%rdi)
vpbroadcastq 64(%rsi), %ymm0
vpbroadcastq 72(%rsi), %ymm1
vpbroadcastq 80(%rsi), %ymm2
vpbroadcastq 88(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmullw %ymm5, %ymm0, %ymm0
vpmullw %ymm5, %ymm1, %ymm1
vpmullw %ymm5, %ymm2, %ymm2
vpmullw %ymm5, %ymm3, %ymm3
vpmulhrsw %ymm7, %ymm0, %ymm0
vpmulhrsw %ymm7, %ymm1, %ymm1
vpmulhrsw %ymm7, %ymm2, %ymm2
vpmulhrsw %ymm7, %ymm3, %ymm3
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm1, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vpbroadcastq 96(%rsi), %ymm0
vpbroadcastq 104(%rsi), %ymm1
vpbroadcastq 112(%rsi), %ymm2
vpbroadcastq 120(%rsi), %ymm3
vpshufb %ymm6, %ymm0, %ymm0
vpshufb %ymm6, %ymm1, %ymm1
vpshufb %ymm6, %ymm2, %ymm2
vpshufb %ymm6, %ymm3, %ymm3
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpand %ymm4, %ymm2, %ymm2
vpand %ymm4, %ymm3, %ymm3
vpmullw %ymm5, %ymm0, %ymm0
vpmullw %ymm5, %ymm1, %ymm1
vpmullw %ymm5, %ymm2, %ymm2
vpmullw %ymm5, %ymm3, %ymm3
vpmulhrsw %ymm7, %ymm0, %ymm0
vpmulhrsw %ymm7, %ymm1, %ymm1
vpmulhrsw %ymm7, %ymm2, %ymm2
vpmulhrsw %ymm7, %ymm3, %ymm3
vmovdqu %ymm0, 384(%rdi)
vmovdqu %ymm1, 416(%rdi)
vmovdqu %ymm2, 448(%rdi)
vmovdqu %ymm3, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_decompress_4_avx2,.-mlkem_decompress_4_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_v:
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
.value 0x4ebf,0x4ebf
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_shift:
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
.value 0x0400,0x0400
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_mask:
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
.value 0x001f,0x001f
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_shift1:
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
.value 0x2001,0x2001
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_shift2:
.long 0x04000001,0x04000001,0x04000001,0x04000001
.long 0x04000001,0x04000001,0x04000001,0x04000001
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 32
#else
.p2align 5
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_shlv:
.quad 0xc, 0xc
.quad 0xc, 0xc
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_compress_5_avx2_shuffle:
.value 0x100,0x302
.value 0xff04,0xffff
.value 0xffff,0x908
.value 0xb0a,0xff0c
.value 0xa09,0xc0b
.value 0xff,0x201
.value 0x403,0xffff
.value 0xffff,0x8ff
#ifndef __APPLE__
.text
.globl mlkem_compress_5_avx2
.type mlkem_compress_5_avx2,@function
.align 16
mlkem_compress_5_avx2:
#else
.section __TEXT,__text
.globl _mlkem_compress_5_avx2
.p2align 4
_mlkem_compress_5_avx2:
#endif /* __APPLE__ */
vmovdqu (%rsi), %ymm0
vmovdqu L_mlkem_compress_5_avx2_v(%rip), %ymm2
vmovdqu L_mlkem_compress_5_avx2_shift(%rip), %ymm3
vmovdqu L_mlkem_compress_5_avx2_mask(%rip), %ymm4
vmovdqu L_mlkem_compress_5_avx2_shift1(%rip), %ymm5
vmovdqu L_mlkem_compress_5_avx2_shift2(%rip), %ymm6
vmovdqu L_mlkem_compress_5_avx2_shlv(%rip), %ymm7
vmovdqu L_mlkem_compress_5_avx2_shuffle(%rip), %ymm8
vpmulhw (%rsi), %ymm2, %ymm0
vpmulhw 32(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, (%rdi)
movss %xmm1, 16(%rdi)
vpmulhw 64(%rsi), %ymm2, %ymm0
vpmulhw 96(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 20(%rdi)
movss %xmm1, 36(%rdi)
vpmulhw 128(%rsi), %ymm2, %ymm0
vpmulhw 160(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 40(%rdi)
movss %xmm1, 56(%rdi)
vpmulhw 192(%rsi), %ymm2, %ymm0
vpmulhw 224(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 60(%rdi)
movss %xmm1, 76(%rdi)
vpmulhw 256(%rsi), %ymm2, %ymm0
vpmulhw 288(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 80(%rdi)
movss %xmm1, 96(%rdi)
vpmulhw 320(%rsi), %ymm2, %ymm0
vpmulhw 352(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 100(%rdi)
movss %xmm1, 116(%rdi)
vpmulhw 384(%rsi), %ymm2, %ymm0
vpmulhw 416(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 120(%rdi)
movss %xmm1, 136(%rdi)
vpmulhw 448(%rsi), %ymm2, %ymm0
vpmulhw 480(%rsi), %ymm2, %ymm1
vpmulhrsw %ymm3, %ymm0, %ymm0
vpmulhrsw %ymm3, %ymm1, %ymm1
vpand %ymm4, %ymm0, %ymm0
vpand %ymm4, %ymm1, %ymm1
vpackuswb %ymm1, %ymm0, %ymm0
vpmaddubsw %ymm5, %ymm0, %ymm0
vpmaddwd %ymm6, %ymm0, %ymm0
vpsllvd %ymm7, %ymm0, %ymm0
vpsrlvq %ymm7, %ymm0, %ymm0
vpshufb %ymm8, %ymm0, %ymm0
vextracti128 $0x01, %ymm0, %xmm1
vpblendvb %xmm8, %xmm1, %xmm0, %xmm0
vmovdqu %xmm0, 140(%rdi)
movss %xmm1, 156(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_compress_5_avx2,.-mlkem_compress_5_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_5_avx2_q:
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
.value 0x0d01,0x0d01
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_5_avx2_shuf:
.value 0x0,0x100
.value 0x101,0x201
.value 0x302,0x303
.value 0x403,0x404
.value 0x505,0x605
.value 0x606,0x706
.value 0x807,0x808
.value 0x908,0x909
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_5_avx2_mask:
.value 0x001f,0x03e0
.value 0x007c,0x0f80
.value 0x01f0,0x003e
.value 0x07c0,0x00fb
.value 0x001f,0x03e0
.value 0x007c,0x0f80
.value 0x01f0,0x003e
.value 0x07c0,0x00fb
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_decompress_5_avx2_shift:
.value 0x0400,0x0020
.value 0x0100,0x0008
.value 0x0040,0x0200
.value 0x0010,0x0080
.value 0x0400,0x0020
.value 0x0100,0x0008
.value 0x0040,0x0200
.value 0x0010,0x0080
#ifndef __APPLE__
.text
.globl mlkem_decompress_5_avx2
.type mlkem_decompress_5_avx2,@function
.align 16
mlkem_decompress_5_avx2:
#else
.section __TEXT,__text
.globl _mlkem_decompress_5_avx2
.p2align 4
_mlkem_decompress_5_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_decompress_5_avx2_q(%rip), %ymm1
vmovdqu L_mlkem_decompress_5_avx2_shuf(%rip), %ymm2
vmovdqu L_mlkem_decompress_5_avx2_mask(%rip), %ymm3
vmovdqu L_mlkem_decompress_5_avx2_shift(%rip), %ymm4
vbroadcasti128 (%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, (%rdi)
vbroadcasti128 10(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 32(%rdi)
vbroadcasti128 20(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 64(%rdi)
vbroadcasti128 30(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 96(%rdi)
vbroadcasti128 40(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 128(%rdi)
vbroadcasti128 50(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 160(%rdi)
vbroadcasti128 60(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 192(%rdi)
vbroadcasti128 70(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 224(%rdi)
vbroadcasti128 80(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 256(%rdi)
vbroadcasti128 90(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 288(%rdi)
vbroadcasti128 100(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 320(%rdi)
vbroadcasti128 110(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 352(%rdi)
vbroadcasti128 120(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 384(%rdi)
vbroadcasti128 130(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 416(%rdi)
vbroadcasti128 140(%rsi), %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 448(%rdi)
vmovq 150(%rsi), %xmm0
movzwq 158(%rsi), %rdx
vpinsrq $0x01, %rdx, %xmm0, %xmm0
vinserti128 $0x01, %xmm0, %ymm0, %ymm0
vpshufb %ymm2, %ymm0, %ymm0
vpand %ymm3, %ymm0, %ymm0
vpmullw %ymm4, %ymm0, %ymm0
vpmulhrsw %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_decompress_5_avx2,.-mlkem_decompress_5_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_from_msg_avx2_shift:
.long 0x00000003,0x00000002,0x00000001,0x00000000
.long 0x00000003,0x00000002,0x00000001,0x00000000
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_from_msg_avx2_shuf:
.value 0x100,0x504
.value 0x908,0xd0c
.value 0x302,0x706
.value 0xb0a,0xf0e
.value 0x100,0x504
.value 0x908,0xd0c
.value 0x302,0x706
.value 0xb0a,0xf0e
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_from_msg_avx2_hqs:
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
.value 0x0681,0x0681
#ifndef __APPLE__
.text
.globl mlkem_from_msg_avx2
.type mlkem_from_msg_avx2,@function
.align 16
mlkem_from_msg_avx2:
#else
.section __TEXT,__text
.globl _mlkem_from_msg_avx2
.p2align 4
_mlkem_from_msg_avx2:
#endif /* __APPLE__ */
vmovdqu (%rsi), %ymm0
vmovdqu L_mlkem_from_msg_avx2_shift(%rip), %ymm9
vmovdqu L_mlkem_from_msg_avx2_shuf(%rip), %ymm10
vmovdqu L_mlkem_from_msg_avx2_hqs(%rip), %ymm11
vpshufd $0x00, %ymm0, %ymm4
vpsllvd %ymm9, %ymm4, %ymm4
vpshufb %ymm10, %ymm4, %ymm4
vpsllw $12, %ymm4, %ymm1
vpsllw $8, %ymm4, %ymm2
vpsllw $4, %ymm4, %ymm3
vpsraw $15, %ymm1, %ymm1
vpsraw $15, %ymm2, %ymm2
vpsraw $15, %ymm3, %ymm3
vpsraw $15, %ymm4, %ymm4
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm11, %ymm4, %ymm4
vpunpcklqdq %ymm2, %ymm1, %ymm5
vpunpckhqdq %ymm2, %ymm1, %ymm7
vpunpcklqdq %ymm4, %ymm3, %ymm6
vpunpckhqdq %ymm4, %ymm3, %ymm8
vperm2i128 $32, %ymm6, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm5, %ymm3
vperm2i128 $32, %ymm8, %ymm7, %ymm2
vperm2i128 $49, %ymm8, %ymm7, %ymm4
vmovdqu %ymm1, (%rdi)
vmovdqu %ymm2, 32(%rdi)
vmovdqu %ymm3, 256(%rdi)
vmovdqu %ymm4, 288(%rdi)
vpshufd $0x55, %ymm0, %ymm4
vpsllvd %ymm9, %ymm4, %ymm4
vpshufb %ymm10, %ymm4, %ymm4
vpsllw $12, %ymm4, %ymm1
vpsllw $8, %ymm4, %ymm2
vpsllw $4, %ymm4, %ymm3
vpsraw $15, %ymm1, %ymm1
vpsraw $15, %ymm2, %ymm2
vpsraw $15, %ymm3, %ymm3
vpsraw $15, %ymm4, %ymm4
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm11, %ymm4, %ymm4
vpunpcklqdq %ymm2, %ymm1, %ymm5
vpunpckhqdq %ymm2, %ymm1, %ymm7
vpunpcklqdq %ymm4, %ymm3, %ymm6
vpunpckhqdq %ymm4, %ymm3, %ymm8
vperm2i128 $32, %ymm6, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm5, %ymm3
vperm2i128 $32, %ymm8, %ymm7, %ymm2
vperm2i128 $49, %ymm8, %ymm7, %ymm4
vmovdqu %ymm1, 64(%rdi)
vmovdqu %ymm2, 96(%rdi)
vmovdqu %ymm3, 320(%rdi)
vmovdqu %ymm4, 352(%rdi)
vpshufd $0xaa, %ymm0, %ymm4
vpsllvd %ymm9, %ymm4, %ymm4
vpshufb %ymm10, %ymm4, %ymm4
vpsllw $12, %ymm4, %ymm1
vpsllw $8, %ymm4, %ymm2
vpsllw $4, %ymm4, %ymm3
vpsraw $15, %ymm1, %ymm1
vpsraw $15, %ymm2, %ymm2
vpsraw $15, %ymm3, %ymm3
vpsraw $15, %ymm4, %ymm4
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm11, %ymm4, %ymm4
vpunpcklqdq %ymm2, %ymm1, %ymm5
vpunpckhqdq %ymm2, %ymm1, %ymm7
vpunpcklqdq %ymm4, %ymm3, %ymm6
vpunpckhqdq %ymm4, %ymm3, %ymm8
vperm2i128 $32, %ymm6, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm5, %ymm3
vperm2i128 $32, %ymm8, %ymm7, %ymm2
vperm2i128 $49, %ymm8, %ymm7, %ymm4
vmovdqu %ymm1, 128(%rdi)
vmovdqu %ymm2, 160(%rdi)
vmovdqu %ymm3, 384(%rdi)
vmovdqu %ymm4, 416(%rdi)
vpshufd $0xff, %ymm0, %ymm4
vpsllvd %ymm9, %ymm4, %ymm4
vpshufb %ymm10, %ymm4, %ymm4
vpsllw $12, %ymm4, %ymm1
vpsllw $8, %ymm4, %ymm2
vpsllw $4, %ymm4, %ymm3
vpsraw $15, %ymm1, %ymm1
vpsraw $15, %ymm2, %ymm2
vpsraw $15, %ymm3, %ymm3
vpsraw $15, %ymm4, %ymm4
vpand %ymm11, %ymm1, %ymm1
vpand %ymm11, %ymm2, %ymm2
vpand %ymm11, %ymm3, %ymm3
vpand %ymm11, %ymm4, %ymm4
vpunpcklqdq %ymm2, %ymm1, %ymm5
vpunpckhqdq %ymm2, %ymm1, %ymm7
vpunpcklqdq %ymm4, %ymm3, %ymm6
vpunpckhqdq %ymm4, %ymm3, %ymm8
vperm2i128 $32, %ymm6, %ymm5, %ymm1
vperm2i128 $49, %ymm6, %ymm5, %ymm3
vperm2i128 $32, %ymm8, %ymm7, %ymm2
vperm2i128 $49, %ymm8, %ymm7, %ymm4
vmovdqu %ymm1, 192(%rdi)
vmovdqu %ymm2, 224(%rdi)
vmovdqu %ymm3, 448(%rdi)
vmovdqu %ymm4, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_from_msg_avx2,.-mlkem_from_msg_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_to_msg_avx2_hqs:
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
.value 0x0680,0x0680
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_to_msg_avx2_hhqs:
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
.value 0xfcc1,0xfcc1
#ifndef __APPLE__
.text
.globl mlkem_to_msg_avx2
.type mlkem_to_msg_avx2,@function
.align 16
mlkem_to_msg_avx2:
#else
.section __TEXT,__text
.globl _mlkem_to_msg_avx2
.p2align 4
_mlkem_to_msg_avx2:
#endif /* __APPLE__ */
vmovdqu L_mlkem_to_msg_avx2_hqs(%rip), %ymm8
vmovdqu L_mlkem_to_msg_avx2_hhqs(%rip), %ymm9
vpsubw (%rsi), %ymm8, %ymm0
vpsubw 32(%rsi), %ymm8, %ymm1
vpsubw 64(%rsi), %ymm8, %ymm2
vpsubw 96(%rsi), %ymm8, %ymm3
vpsraw $15, %ymm0, %ymm4
vpsraw $15, %ymm1, %ymm5
vpsraw $15, %ymm2, %ymm6
vpsraw $15, %ymm3, %ymm7
vpxor %ymm4, %ymm0, %ymm0
vpxor %ymm5, %ymm1, %ymm1
vpxor %ymm6, %ymm2, %ymm2
vpxor %ymm7, %ymm3, %ymm3
vpaddw %ymm9, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm9, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpacksswb %ymm1, %ymm0, %ymm0
vpacksswb %ymm3, %ymm2, %ymm2
vpermq $0xd8, %ymm0, %ymm0
vpermq $0xd8, %ymm2, %ymm2
vpmovmskb %ymm0, %edx
vpmovmskb %ymm2, %eax
movl %edx, (%rdi)
movl %eax, 4(%rdi)
vpsubw 128(%rsi), %ymm8, %ymm0
vpsubw 160(%rsi), %ymm8, %ymm1
vpsubw 192(%rsi), %ymm8, %ymm2
vpsubw 224(%rsi), %ymm8, %ymm3
vpsraw $15, %ymm0, %ymm4
vpsraw $15, %ymm1, %ymm5
vpsraw $15, %ymm2, %ymm6
vpsraw $15, %ymm3, %ymm7
vpxor %ymm4, %ymm0, %ymm0
vpxor %ymm5, %ymm1, %ymm1
vpxor %ymm6, %ymm2, %ymm2
vpxor %ymm7, %ymm3, %ymm3
vpaddw %ymm9, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm9, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpacksswb %ymm1, %ymm0, %ymm0
vpacksswb %ymm3, %ymm2, %ymm2
vpermq $0xd8, %ymm0, %ymm0
vpermq $0xd8, %ymm2, %ymm2
vpmovmskb %ymm0, %edx
vpmovmskb %ymm2, %eax
movl %edx, 8(%rdi)
movl %eax, 12(%rdi)
vpsubw 256(%rsi), %ymm8, %ymm0
vpsubw 288(%rsi), %ymm8, %ymm1
vpsubw 320(%rsi), %ymm8, %ymm2
vpsubw 352(%rsi), %ymm8, %ymm3
vpsraw $15, %ymm0, %ymm4
vpsraw $15, %ymm1, %ymm5
vpsraw $15, %ymm2, %ymm6
vpsraw $15, %ymm3, %ymm7
vpxor %ymm4, %ymm0, %ymm0
vpxor %ymm5, %ymm1, %ymm1
vpxor %ymm6, %ymm2, %ymm2
vpxor %ymm7, %ymm3, %ymm3
vpaddw %ymm9, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm9, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpacksswb %ymm1, %ymm0, %ymm0
vpacksswb %ymm3, %ymm2, %ymm2
vpermq $0xd8, %ymm0, %ymm0
vpermq $0xd8, %ymm2, %ymm2
vpmovmskb %ymm0, %edx
vpmovmskb %ymm2, %eax
movl %edx, 16(%rdi)
movl %eax, 20(%rdi)
vpsubw 384(%rsi), %ymm8, %ymm0
vpsubw 416(%rsi), %ymm8, %ymm1
vpsubw 448(%rsi), %ymm8, %ymm2
vpsubw 480(%rsi), %ymm8, %ymm3
vpsraw $15, %ymm0, %ymm4
vpsraw $15, %ymm1, %ymm5
vpsraw $15, %ymm2, %ymm6
vpsraw $15, %ymm3, %ymm7
vpxor %ymm4, %ymm0, %ymm0
vpxor %ymm5, %ymm1, %ymm1
vpxor %ymm6, %ymm2, %ymm2
vpxor %ymm7, %ymm3, %ymm3
vpaddw %ymm9, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm9, %ymm2, %ymm2
vpaddw %ymm9, %ymm3, %ymm3
vpacksswb %ymm1, %ymm0, %ymm0
vpacksswb %ymm3, %ymm2, %ymm2
vpermq $0xd8, %ymm0, %ymm0
vpermq $0xd8, %ymm2, %ymm2
vpmovmskb %ymm0, %edx
vpmovmskb %ymm2, %eax
movl %edx, 24(%rdi)
movl %eax, 28(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_to_msg_avx2,.-mlkem_to_msg_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_from_bytes_avx2_shuf:
.value 0x100,0xff02
.value 0x403,0xff05
.value 0x706,0xff08
.value 0xa09,0xff0b
.value 0x504,0xff06
.value 0x807,0xff09
.value 0xb0a,0xff0c
.value 0xe0d,0xff0f
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_from_bytes_avx2_mask:
.long 0x00000fff,0x00000fff,0x00000fff,0x00000fff
.long 0x00000fff,0x00000fff,0x00000fff,0x00000fff
#ifndef __APPLE__
.text
.globl mlkem_from_bytes_avx2
.type mlkem_from_bytes_avx2,@function
.align 16
mlkem_from_bytes_avx2:
#else
.section __TEXT,__text
.globl _mlkem_from_bytes_avx2
.p2align 4
_mlkem_from_bytes_avx2:
#endif /* __APPLE__ */
vmovdqu (%rsi), %ymm0
vmovdqu L_mlkem_from_bytes_avx2_shuf(%rip), %ymm12
vmovdqu L_mlkem_from_bytes_avx2_mask(%rip), %ymm13
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 128(%rsi), %ymm4
vmovdqu 160(%rsi), %ymm5
vpermq $0xe9, %ymm5, %ymm7
vpermq $0x00, %ymm5, %ymm8
vpermq $62, %ymm4, %ymm6
vpermq $0x40, %ymm4, %ymm9
vpermq $3, %ymm3, %ymm5
vpermq $0x94, %ymm3, %ymm4
vpermq $0xe9, %ymm2, %ymm3
vpermq $0x00, %ymm2, %ymm10
vpermq $62, %ymm1, %ymm2
vpermq $0x40, %ymm1, %ymm11
vpermq $3, %ymm0, %ymm1
vpermq $0x94, %ymm0, %ymm0
vpblendd $0xc0, %ymm8, %ymm6, %ymm6
vpblendd $0xfc, %ymm9, %ymm5, %ymm5
vpblendd $0xc0, %ymm10, %ymm2, %ymm2
vpblendd $0xfc, %ymm11, %ymm1, %ymm1
vpshufb %ymm12, %ymm0, %ymm0
vpshufb %ymm12, %ymm1, %ymm1
vpshufb %ymm12, %ymm2, %ymm2
vpshufb %ymm12, %ymm3, %ymm3
vpshufb %ymm12, %ymm4, %ymm4
vpshufb %ymm12, %ymm5, %ymm5
vpshufb %ymm12, %ymm6, %ymm6
vpshufb %ymm12, %ymm7, %ymm7
vpandn %ymm0, %ymm13, %ymm8
vpandn %ymm1, %ymm13, %ymm9
vpandn %ymm2, %ymm13, %ymm10
vpandn %ymm3, %ymm13, %ymm11
vpand %ymm0, %ymm13, %ymm0
vpand %ymm1, %ymm13, %ymm1
vpand %ymm2, %ymm13, %ymm2
vpand %ymm3, %ymm13, %ymm3
vpslld $4, %ymm8, %ymm8
vpslld $4, %ymm9, %ymm9
vpslld $4, %ymm10, %ymm10
vpslld $4, %ymm11, %ymm11
vpor %ymm8, %ymm0, %ymm0
vpor %ymm9, %ymm1, %ymm1
vpor %ymm10, %ymm2, %ymm2
vpor %ymm11, %ymm3, %ymm3
vpandn %ymm4, %ymm13, %ymm8
vpandn %ymm5, %ymm13, %ymm9
vpandn %ymm6, %ymm13, %ymm10
vpandn %ymm7, %ymm13, %ymm11
vpand %ymm4, %ymm13, %ymm4
vpand %ymm5, %ymm13, %ymm5
vpand %ymm6, %ymm13, %ymm6
vpand %ymm7, %ymm13, %ymm7
vpslld $4, %ymm8, %ymm8
vpslld $4, %ymm9, %ymm9
vpslld $4, %ymm10, %ymm10
vpslld $4, %ymm11, %ymm11
vpor %ymm8, %ymm4, %ymm4
vpor %ymm9, %ymm5, %ymm5
vpor %ymm10, %ymm6, %ymm6
vpor %ymm11, %ymm7, %ymm7
vmovdqu %ymm0, (%rdi)
vmovdqu %ymm1, 32(%rdi)
vmovdqu %ymm2, 64(%rdi)
vmovdqu %ymm3, 96(%rdi)
vmovdqu %ymm4, 128(%rdi)
vmovdqu %ymm5, 160(%rdi)
vmovdqu %ymm6, 192(%rdi)
vmovdqu %ymm7, 224(%rdi)
vmovdqu 192(%rsi), %ymm0
vmovdqu 224(%rsi), %ymm1
vmovdqu 256(%rsi), %ymm2
vmovdqu 288(%rsi), %ymm3
vmovdqu 320(%rsi), %ymm4
vmovdqu 352(%rsi), %ymm5
vpermq $0xe9, %ymm5, %ymm7
vpermq $0x00, %ymm5, %ymm8
vpermq $62, %ymm4, %ymm6
vpermq $0x40, %ymm4, %ymm9
vpermq $3, %ymm3, %ymm5
vpermq $0x94, %ymm3, %ymm4
vpermq $0xe9, %ymm2, %ymm3
vpermq $0x00, %ymm2, %ymm10
vpermq $62, %ymm1, %ymm2
vpermq $0x40, %ymm1, %ymm11
vpermq $3, %ymm0, %ymm1
vpermq $0x94, %ymm0, %ymm0
vpblendd $0xc0, %ymm8, %ymm6, %ymm6
vpblendd $0xfc, %ymm9, %ymm5, %ymm5
vpblendd $0xc0, %ymm10, %ymm2, %ymm2
vpblendd $0xfc, %ymm11, %ymm1, %ymm1
vpshufb %ymm12, %ymm0, %ymm0
vpshufb %ymm12, %ymm1, %ymm1
vpshufb %ymm12, %ymm2, %ymm2
vpshufb %ymm12, %ymm3, %ymm3
vpshufb %ymm12, %ymm4, %ymm4
vpshufb %ymm12, %ymm5, %ymm5
vpshufb %ymm12, %ymm6, %ymm6
vpshufb %ymm12, %ymm7, %ymm7
vpandn %ymm0, %ymm13, %ymm8
vpandn %ymm1, %ymm13, %ymm9
vpandn %ymm2, %ymm13, %ymm10
vpandn %ymm3, %ymm13, %ymm11
vpand %ymm0, %ymm13, %ymm0
vpand %ymm1, %ymm13, %ymm1
vpand %ymm2, %ymm13, %ymm2
vpand %ymm3, %ymm13, %ymm3
vpslld $4, %ymm8, %ymm8
vpslld $4, %ymm9, %ymm9
vpslld $4, %ymm10, %ymm10
vpslld $4, %ymm11, %ymm11
vpor %ymm8, %ymm0, %ymm0
vpor %ymm9, %ymm1, %ymm1
vpor %ymm10, %ymm2, %ymm2
vpor %ymm11, %ymm3, %ymm3
vpandn %ymm4, %ymm13, %ymm8
vpandn %ymm5, %ymm13, %ymm9
vpandn %ymm6, %ymm13, %ymm10
vpandn %ymm7, %ymm13, %ymm11
vpand %ymm4, %ymm13, %ymm4
vpand %ymm5, %ymm13, %ymm5
vpand %ymm6, %ymm13, %ymm6
vpand %ymm7, %ymm13, %ymm7
vpslld $4, %ymm8, %ymm8
vpslld $4, %ymm9, %ymm9
vpslld $4, %ymm10, %ymm10
vpslld $4, %ymm11, %ymm11
vpor %ymm8, %ymm4, %ymm4
vpor %ymm9, %ymm5, %ymm5
vpor %ymm10, %ymm6, %ymm6
vpor %ymm11, %ymm7, %ymm7
vmovdqu %ymm0, 256(%rdi)
vmovdqu %ymm1, 288(%rdi)
vmovdqu %ymm2, 320(%rdi)
vmovdqu %ymm3, 352(%rdi)
vmovdqu %ymm4, 384(%rdi)
vmovdqu %ymm5, 416(%rdi)
vmovdqu %ymm6, 448(%rdi)
vmovdqu %ymm7, 480(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_from_bytes_avx2,.-mlkem_from_bytes_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_to_bytes_avx2_mask:
.long 0x00000fff,0x00000fff,0x00000fff,0x00000fff
.long 0x00000fff,0x00000fff,0x00000fff,0x00000fff
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align 16
#else
.p2align 4
#endif /* __APPLE__ */
L_mlkem_to_bytes_avx2_shuf:
.value 0x100,0x402
.value 0x605,0x908
.value 0xc0a,0xe0d
.value 0xffff,0xffff
.value 0x605,0x908
.value 0xc0a,0xe0d
.value 0xffff,0xffff
.value 0x100,0x402
#ifndef __APPLE__
.data
#else
.section __DATA,__data
#endif /* __APPLE__ */
L_mlkem_to_bytes_avx2_perm:
.long 0x00000000,0x00000001,0x00000002,0x00000007
.long 0x00000004,0x00000005,0x00000003,0x00000006
#ifndef __APPLE__
.text
.globl mlkem_to_bytes_avx2
.type mlkem_to_bytes_avx2,@function
.align 16
mlkem_to_bytes_avx2:
#else
.section __TEXT,__text
.globl _mlkem_to_bytes_avx2
.p2align 4
_mlkem_to_bytes_avx2:
#endif /* __APPLE__ */
vmovdqu mlkem_q(%rip), %ymm12
vmovdqu L_mlkem_to_bytes_avx2_mask(%rip), %ymm13
vmovdqu L_mlkem_to_bytes_avx2_shuf(%rip), %ymm14
vmovdqu L_mlkem_to_bytes_avx2_perm(%rip), %ymm15
vmovdqu (%rsi), %ymm0
vmovdqu 32(%rsi), %ymm1
vmovdqu 64(%rsi), %ymm2
vmovdqu 96(%rsi), %ymm3
vmovdqu 128(%rsi), %ymm4
vmovdqu 160(%rsi), %ymm5
vmovdqu 192(%rsi), %ymm6
vmovdqu 224(%rsi), %ymm7
vpsubw %ymm12, %ymm0, %ymm8
vpsubw %ymm12, %ymm1, %ymm9
vpsubw %ymm12, %ymm2, %ymm10
vpsubw %ymm12, %ymm3, %ymm11
vpsraw $15, %ymm8, %ymm0
vpsraw $15, %ymm9, %ymm1
vpsraw $15, %ymm10, %ymm2
vpsraw $15, %ymm11, %ymm3
vpand %ymm12, %ymm0, %ymm0
vpand %ymm12, %ymm1, %ymm1
vpand %ymm12, %ymm2, %ymm2
vpand %ymm12, %ymm3, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm10, %ymm2, %ymm2
vpaddw %ymm11, %ymm3, %ymm3
vpsubw %ymm12, %ymm4, %ymm8
vpsubw %ymm12, %ymm5, %ymm9
vpsubw %ymm12, %ymm6, %ymm10
vpsubw %ymm12, %ymm7, %ymm11
vpsraw $15, %ymm8, %ymm4
vpsraw $15, %ymm9, %ymm5
vpsraw $15, %ymm10, %ymm6
vpsraw $15, %ymm11, %ymm7
vpand %ymm12, %ymm4, %ymm4
vpand %ymm12, %ymm5, %ymm5
vpand %ymm12, %ymm6, %ymm6
vpand %ymm12, %ymm7, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpaddw %ymm10, %ymm6, %ymm6
vpaddw %ymm11, %ymm7, %ymm7
vpsrld $16, %ymm0, %ymm8
vpsrld $16, %ymm1, %ymm9
vpsrld $16, %ymm2, %ymm10
vpsrld $16, %ymm3, %ymm11
vpand %ymm0, %ymm13, %ymm0
vpand %ymm1, %ymm13, %ymm1
vpand %ymm2, %ymm13, %ymm2
vpand %ymm3, %ymm13, %ymm3
vpslld $12, %ymm8, %ymm8
vpslld $12, %ymm9, %ymm9
vpslld $12, %ymm10, %ymm10
vpslld $12, %ymm11, %ymm11
vpor %ymm8, %ymm0, %ymm0
vpor %ymm9, %ymm1, %ymm1
vpor %ymm10, %ymm2, %ymm2
vpor %ymm11, %ymm3, %ymm3
vpsrld $16, %ymm4, %ymm8
vpsrld $16, %ymm5, %ymm9
vpsrld $16, %ymm6, %ymm10
vpsrld $16, %ymm7, %ymm11
vpand %ymm4, %ymm13, %ymm4
vpand %ymm5, %ymm13, %ymm5
vpand %ymm6, %ymm13, %ymm6
vpand %ymm7, %ymm13, %ymm7
vpslld $12, %ymm8, %ymm8
vpslld $12, %ymm9, %ymm9
vpslld $12, %ymm10, %ymm10
vpslld $12, %ymm11, %ymm11
vpor %ymm8, %ymm4, %ymm4
vpor %ymm9, %ymm5, %ymm5
vpor %ymm10, %ymm6, %ymm6
vpor %ymm11, %ymm7, %ymm7
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm1, %ymm1
vpshufb %ymm14, %ymm2, %ymm2
vpshufb %ymm14, %ymm3, %ymm3
vpshufb %ymm14, %ymm4, %ymm4
vpshufb %ymm14, %ymm5, %ymm5
vpshufb %ymm14, %ymm6, %ymm6
vpshufb %ymm14, %ymm7, %ymm7
vpermd %ymm0, %ymm15, %ymm0
vpermd %ymm1, %ymm15, %ymm1
vpermd %ymm2, %ymm15, %ymm2
vpermd %ymm3, %ymm15, %ymm3
vpermd %ymm4, %ymm15, %ymm4
vpermd %ymm5, %ymm15, %ymm5
vpermd %ymm6, %ymm15, %ymm6
vpermd %ymm7, %ymm15, %ymm7
vpermq $2, %ymm6, %ymm8
vpermq $0x90, %ymm7, %ymm7
vpermq $9, %ymm5, %ymm9
vpermq $0x40, %ymm6, %ymm6
vpermq $0x00, %ymm5, %ymm5
vpblendd $63, %ymm4, %ymm5, %ymm5
vpermq $2, %ymm2, %ymm10
vpermq $0x90, %ymm3, %ymm4
vpermq $9, %ymm1, %ymm11
vpermq $0x40, %ymm2, %ymm3
vpermq $0x00, %ymm1, %ymm2
vpblendd $63, %ymm0, %ymm2, %ymm2
vpblendd $3, %ymm8, %ymm7, %ymm7
vpblendd $15, %ymm9, %ymm6, %ymm6
vpblendd $3, %ymm10, %ymm4, %ymm4
vpblendd $15, %ymm11, %ymm3, %ymm3
vmovdqu %ymm2, (%rdi)
vmovdqu %ymm3, 32(%rdi)
vmovdqu %ymm4, 64(%rdi)
vmovdqu %ymm5, 96(%rdi)
vmovdqu %ymm6, 128(%rdi)
vmovdqu %ymm7, 160(%rdi)
vmovdqu 256(%rsi), %ymm0
vmovdqu 288(%rsi), %ymm1
vmovdqu 320(%rsi), %ymm2
vmovdqu 352(%rsi), %ymm3
vmovdqu 384(%rsi), %ymm4
vmovdqu 416(%rsi), %ymm5
vmovdqu 448(%rsi), %ymm6
vmovdqu 480(%rsi), %ymm7
vpsubw %ymm12, %ymm0, %ymm8
vpsubw %ymm12, %ymm1, %ymm9
vpsubw %ymm12, %ymm2, %ymm10
vpsubw %ymm12, %ymm3, %ymm11
vpsraw $15, %ymm8, %ymm0
vpsraw $15, %ymm9, %ymm1
vpsraw $15, %ymm10, %ymm2
vpsraw $15, %ymm11, %ymm3
vpand %ymm12, %ymm0, %ymm0
vpand %ymm12, %ymm1, %ymm1
vpand %ymm12, %ymm2, %ymm2
vpand %ymm12, %ymm3, %ymm3
vpaddw %ymm8, %ymm0, %ymm0
vpaddw %ymm9, %ymm1, %ymm1
vpaddw %ymm10, %ymm2, %ymm2
vpaddw %ymm11, %ymm3, %ymm3
vpsubw %ymm12, %ymm4, %ymm8
vpsubw %ymm12, %ymm5, %ymm9
vpsubw %ymm12, %ymm6, %ymm10
vpsubw %ymm12, %ymm7, %ymm11
vpsraw $15, %ymm8, %ymm4
vpsraw $15, %ymm9, %ymm5
vpsraw $15, %ymm10, %ymm6
vpsraw $15, %ymm11, %ymm7
vpand %ymm12, %ymm4, %ymm4
vpand %ymm12, %ymm5, %ymm5
vpand %ymm12, %ymm6, %ymm6
vpand %ymm12, %ymm7, %ymm7
vpaddw %ymm8, %ymm4, %ymm4
vpaddw %ymm9, %ymm5, %ymm5
vpaddw %ymm10, %ymm6, %ymm6
vpaddw %ymm11, %ymm7, %ymm7
vpsrld $16, %ymm0, %ymm8
vpsrld $16, %ymm1, %ymm9
vpsrld $16, %ymm2, %ymm10
vpsrld $16, %ymm3, %ymm11
vpand %ymm0, %ymm13, %ymm0
vpand %ymm1, %ymm13, %ymm1
vpand %ymm2, %ymm13, %ymm2
vpand %ymm3, %ymm13, %ymm3
vpslld $12, %ymm8, %ymm8
vpslld $12, %ymm9, %ymm9
vpslld $12, %ymm10, %ymm10
vpslld $12, %ymm11, %ymm11
vpor %ymm8, %ymm0, %ymm0
vpor %ymm9, %ymm1, %ymm1
vpor %ymm10, %ymm2, %ymm2
vpor %ymm11, %ymm3, %ymm3
vpsrld $16, %ymm4, %ymm8
vpsrld $16, %ymm5, %ymm9
vpsrld $16, %ymm6, %ymm10
vpsrld $16, %ymm7, %ymm11
vpand %ymm4, %ymm13, %ymm4
vpand %ymm5, %ymm13, %ymm5
vpand %ymm6, %ymm13, %ymm6
vpand %ymm7, %ymm13, %ymm7
vpslld $12, %ymm8, %ymm8
vpslld $12, %ymm9, %ymm9
vpslld $12, %ymm10, %ymm10
vpslld $12, %ymm11, %ymm11
vpor %ymm8, %ymm4, %ymm4
vpor %ymm9, %ymm5, %ymm5
vpor %ymm10, %ymm6, %ymm6
vpor %ymm11, %ymm7, %ymm7
vpshufb %ymm14, %ymm0, %ymm0
vpshufb %ymm14, %ymm1, %ymm1
vpshufb %ymm14, %ymm2, %ymm2
vpshufb %ymm14, %ymm3, %ymm3
vpshufb %ymm14, %ymm4, %ymm4
vpshufb %ymm14, %ymm5, %ymm5
vpshufb %ymm14, %ymm6, %ymm6
vpshufb %ymm14, %ymm7, %ymm7
vpermd %ymm0, %ymm15, %ymm0
vpermd %ymm1, %ymm15, %ymm1
vpermd %ymm2, %ymm15, %ymm2
vpermd %ymm3, %ymm15, %ymm3
vpermd %ymm4, %ymm15, %ymm4
vpermd %ymm5, %ymm15, %ymm5
vpermd %ymm6, %ymm15, %ymm6
vpermd %ymm7, %ymm15, %ymm7
vpermq $2, %ymm6, %ymm8
vpermq $0x90, %ymm7, %ymm7
vpermq $9, %ymm5, %ymm9
vpermq $0x40, %ymm6, %ymm6
vpermq $0x00, %ymm5, %ymm5
vpblendd $63, %ymm4, %ymm5, %ymm5
vpermq $2, %ymm2, %ymm10
vpermq $0x90, %ymm3, %ymm4
vpermq $9, %ymm1, %ymm11
vpermq $0x40, %ymm2, %ymm3
vpermq $0x00, %ymm1, %ymm2
vpblendd $63, %ymm0, %ymm2, %ymm2
vpblendd $3, %ymm8, %ymm7, %ymm7
vpblendd $15, %ymm9, %ymm6, %ymm6
vpblendd $3, %ymm10, %ymm4, %ymm4
vpblendd $15, %ymm11, %ymm3, %ymm3
vmovdqu %ymm2, 192(%rdi)
vmovdqu %ymm3, 224(%rdi)
vmovdqu %ymm4, 256(%rdi)
vmovdqu %ymm5, 288(%rdi)
vmovdqu %ymm6, 320(%rdi)
vmovdqu %ymm7, 352(%rdi)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_to_bytes_avx2,.-mlkem_to_bytes_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_cmp_avx2
.type mlkem_cmp_avx2,@function
.align 16
mlkem_cmp_avx2:
#else
.section __TEXT,__text
.globl _mlkem_cmp_avx2
.p2align 4
_mlkem_cmp_avx2:
#endif /* __APPLE__ */
vpxor %ymm2, %ymm2, %ymm2
vpxor %ymm3, %ymm3, %ymm3
movl $0x00, %ecx
movl $-1, %r8d
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vpxor (%rsi), %ymm0, %ymm0
vpxor 32(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 64(%rdi), %ymm0
vmovdqu 96(%rdi), %ymm1
vpxor 64(%rsi), %ymm0, %ymm0
vpxor 96(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 128(%rdi), %ymm0
vmovdqu 160(%rdi), %ymm1
vpxor 128(%rsi), %ymm0, %ymm0
vpxor 160(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 192(%rdi), %ymm0
vmovdqu 224(%rdi), %ymm1
vpxor 192(%rsi), %ymm0, %ymm0
vpxor 224(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 256(%rdi), %ymm0
vmovdqu 288(%rdi), %ymm1
vpxor 256(%rsi), %ymm0, %ymm0
vpxor 288(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 320(%rdi), %ymm0
vmovdqu 352(%rdi), %ymm1
vpxor 320(%rsi), %ymm0, %ymm0
vpxor 352(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 384(%rdi), %ymm0
vmovdqu 416(%rdi), %ymm1
vpxor 384(%rsi), %ymm0, %ymm0
vpxor 416(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 448(%rdi), %ymm0
vmovdqu 480(%rdi), %ymm1
vpxor 448(%rsi), %ymm0, %ymm0
vpxor 480(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 512(%rdi), %ymm0
vmovdqu 544(%rdi), %ymm1
vpxor 512(%rsi), %ymm0, %ymm0
vpxor 544(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 576(%rdi), %ymm0
vmovdqu 608(%rdi), %ymm1
vpxor 576(%rsi), %ymm0, %ymm0
vpxor 608(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 640(%rdi), %ymm0
vmovdqu 672(%rdi), %ymm1
vpxor 640(%rsi), %ymm0, %ymm0
vpxor 672(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 704(%rdi), %ymm0
vmovdqu 736(%rdi), %ymm1
vpxor 704(%rsi), %ymm0, %ymm0
vpxor 736(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
subl $0x300, %edx
jz L_mlkem_cmp_avx2_done
vmovdqu 768(%rdi), %ymm0
vmovdqu 800(%rdi), %ymm1
vpxor 768(%rsi), %ymm0, %ymm0
vpxor 800(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 832(%rdi), %ymm0
vmovdqu 864(%rdi), %ymm1
vpxor 832(%rsi), %ymm0, %ymm0
vpxor 864(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 896(%rdi), %ymm0
vmovdqu 928(%rdi), %ymm1
vpxor 896(%rsi), %ymm0, %ymm0
vpxor 928(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 960(%rdi), %ymm0
vmovdqu 992(%rdi), %ymm1
vpxor 960(%rsi), %ymm0, %ymm0
vpxor 992(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1024(%rdi), %ymm0
vmovdqu 1056(%rdi), %ymm1
vpxor 1024(%rsi), %ymm0, %ymm0
vpxor 1056(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
subl $0x140, %edx
jz L_mlkem_cmp_avx2_done
vmovdqu 1088(%rdi), %ymm0
vmovdqu 1120(%rdi), %ymm1
vpxor 1088(%rsi), %ymm0, %ymm0
vpxor 1120(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1152(%rdi), %ymm0
vmovdqu 1184(%rdi), %ymm1
vpxor 1152(%rsi), %ymm0, %ymm0
vpxor 1184(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1216(%rdi), %ymm0
vmovdqu 1248(%rdi), %ymm1
vpxor 1216(%rsi), %ymm0, %ymm0
vpxor 1248(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1280(%rdi), %ymm0
vmovdqu 1312(%rdi), %ymm1
vpxor 1280(%rsi), %ymm0, %ymm0
vpxor 1312(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1344(%rdi), %ymm0
vmovdqu 1376(%rdi), %ymm1
vpxor 1344(%rsi), %ymm0, %ymm0
vpxor 1376(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1408(%rdi), %ymm0
vmovdqu 1440(%rdi), %ymm1
vpxor 1408(%rsi), %ymm0, %ymm0
vpxor 1440(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
vmovdqu 1472(%rdi), %ymm0
vmovdqu 1504(%rdi), %ymm1
vpxor 1472(%rsi), %ymm0, %ymm0
vpxor 1504(%rsi), %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpor %ymm1, %ymm3, %ymm3
L_mlkem_cmp_avx2_done:
vpor %ymm3, %ymm2, %ymm2
vptest %ymm2, %ymm2
cmovzl %ecx, %eax
cmovnzl %r8d, %eax
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_cmp_avx2,.-mlkem_cmp_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_redistribute_21_rand_avx2
.type mlkem_redistribute_21_rand_avx2,@function
.align 16
mlkem_redistribute_21_rand_avx2:
#else
.section __TEXT,__text
.globl _mlkem_redistribute_21_rand_avx2
.p2align 4
_mlkem_redistribute_21_rand_avx2:
#endif /* __APPLE__ */
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vmovdqu 192(%rdi), %ymm6
vmovdqu 224(%rdi), %ymm7
vmovdqu 256(%rdi), %ymm8
vmovdqu 288(%rdi), %ymm9
vmovdqu 320(%rdi), %ymm10
vmovdqu 352(%rdi), %ymm11
vpunpcklqdq %ymm1, %ymm0, %ymm12
vpunpckhqdq %ymm1, %ymm0, %ymm13
vpunpcklqdq %ymm3, %ymm2, %ymm14
vpunpckhqdq %ymm3, %ymm2, %ymm15
vperm2i128 $32, %ymm14, %ymm12, %ymm0
vperm2i128 $32, %ymm15, %ymm13, %ymm1
vperm2i128 $49, %ymm14, %ymm12, %ymm2
vperm2i128 $49, %ymm15, %ymm13, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm12
vpunpckhqdq %ymm5, %ymm4, %ymm13
vpunpcklqdq %ymm7, %ymm6, %ymm14
vpunpckhqdq %ymm7, %ymm6, %ymm15
vperm2i128 $32, %ymm14, %ymm12, %ymm4
vperm2i128 $32, %ymm15, %ymm13, %ymm5
vperm2i128 $49, %ymm14, %ymm12, %ymm6
vperm2i128 $49, %ymm15, %ymm13, %ymm7
vpunpcklqdq %ymm9, %ymm8, %ymm12
vpunpckhqdq %ymm9, %ymm8, %ymm13
vpunpcklqdq %ymm11, %ymm10, %ymm14
vpunpckhqdq %ymm11, %ymm10, %ymm15
vperm2i128 $32, %ymm14, %ymm12, %ymm8
vperm2i128 $32, %ymm15, %ymm13, %ymm9
vperm2i128 $49, %ymm14, %ymm12, %ymm10
vperm2i128 $49, %ymm15, %ymm13, %ymm11
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm4, 32(%rsi)
vmovdqu %ymm8, 64(%rsi)
vmovdqu %ymm1, (%rdx)
vmovdqu %ymm5, 32(%rdx)
vmovdqu %ymm9, 64(%rdx)
vmovdqu %ymm2, (%rcx)
vmovdqu %ymm6, 32(%rcx)
vmovdqu %ymm10, 64(%rcx)
vmovdqu %ymm3, (%r8)
vmovdqu %ymm7, 32(%r8)
vmovdqu %ymm11, 64(%r8)
vmovdqu 384(%rdi), %ymm0
vmovdqu 416(%rdi), %ymm1
vmovdqu 448(%rdi), %ymm2
vmovdqu 480(%rdi), %ymm3
vmovdqu 512(%rdi), %ymm4
vmovdqu 544(%rdi), %ymm5
vmovdqu 576(%rdi), %ymm6
vmovdqu 608(%rdi), %ymm7
movq 640(%rdi), %rax
movq 648(%rdi), %r9
movq 656(%rdi), %r10
movq 664(%rdi), %r11
vpunpcklqdq %ymm1, %ymm0, %ymm12
vpunpckhqdq %ymm1, %ymm0, %ymm13
vpunpcklqdq %ymm3, %ymm2, %ymm14
vpunpckhqdq %ymm3, %ymm2, %ymm15
vperm2i128 $32, %ymm14, %ymm12, %ymm0
vperm2i128 $32, %ymm15, %ymm13, %ymm1
vperm2i128 $49, %ymm14, %ymm12, %ymm2
vperm2i128 $49, %ymm15, %ymm13, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm12
vpunpckhqdq %ymm5, %ymm4, %ymm13
vpunpcklqdq %ymm7, %ymm6, %ymm14
vpunpckhqdq %ymm7, %ymm6, %ymm15
vperm2i128 $32, %ymm14, %ymm12, %ymm4
vperm2i128 $32, %ymm15, %ymm13, %ymm5
vperm2i128 $49, %ymm14, %ymm12, %ymm6
vperm2i128 $49, %ymm15, %ymm13, %ymm7
vmovdqu %ymm0, 96(%rsi)
vmovdqu %ymm4, 128(%rsi)
movq %rax, 160(%rsi)
vmovdqu %ymm1, 96(%rdx)
vmovdqu %ymm5, 128(%rdx)
movq %r9, 160(%rdx)
vmovdqu %ymm2, 96(%rcx)
vmovdqu %ymm6, 128(%rcx)
movq %r10, 160(%rcx)
vmovdqu %ymm3, 96(%r8)
vmovdqu %ymm7, 128(%r8)
movq %r11, 160(%r8)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_redistribute_21_rand_avx2,.-mlkem_redistribute_21_rand_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_redistribute_17_rand_avx2
.type mlkem_redistribute_17_rand_avx2,@function
.align 16
mlkem_redistribute_17_rand_avx2:
#else
.section __TEXT,__text
.globl _mlkem_redistribute_17_rand_avx2
.p2align 4
_mlkem_redistribute_17_rand_avx2:
#endif /* __APPLE__ */
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vmovdqu 192(%rdi), %ymm6
vmovdqu 224(%rdi), %ymm7
vpunpcklqdq %ymm1, %ymm0, %ymm8
vpunpckhqdq %ymm1, %ymm0, %ymm9
vpunpcklqdq %ymm3, %ymm2, %ymm10
vpunpckhqdq %ymm3, %ymm2, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm0
vperm2i128 $32, %ymm11, %ymm9, %ymm1
vperm2i128 $49, %ymm10, %ymm8, %ymm2
vperm2i128 $49, %ymm11, %ymm9, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm8
vpunpckhqdq %ymm5, %ymm4, %ymm9
vpunpcklqdq %ymm7, %ymm6, %ymm10
vpunpckhqdq %ymm7, %ymm6, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm4
vperm2i128 $32, %ymm11, %ymm9, %ymm5
vperm2i128 $49, %ymm10, %ymm8, %ymm6
vperm2i128 $49, %ymm11, %ymm9, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm4, 32(%rsi)
vmovdqu %ymm1, (%rdx)
vmovdqu %ymm5, 32(%rdx)
vmovdqu %ymm2, (%rcx)
vmovdqu %ymm6, 32(%rcx)
vmovdqu %ymm3, (%r8)
vmovdqu %ymm7, 32(%r8)
vmovdqu 256(%rdi), %ymm0
vmovdqu 288(%rdi), %ymm1
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vmovdqu 448(%rdi), %ymm6
vmovdqu 480(%rdi), %ymm7
movq 512(%rdi), %rax
movq 520(%rdi), %r9
movq 528(%rdi), %r10
movq 536(%rdi), %r11
vpunpcklqdq %ymm1, %ymm0, %ymm8
vpunpckhqdq %ymm1, %ymm0, %ymm9
vpunpcklqdq %ymm3, %ymm2, %ymm10
vpunpckhqdq %ymm3, %ymm2, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm0
vperm2i128 $32, %ymm11, %ymm9, %ymm1
vperm2i128 $49, %ymm10, %ymm8, %ymm2
vperm2i128 $49, %ymm11, %ymm9, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm8
vpunpckhqdq %ymm5, %ymm4, %ymm9
vpunpcklqdq %ymm7, %ymm6, %ymm10
vpunpckhqdq %ymm7, %ymm6, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm4
vperm2i128 $32, %ymm11, %ymm9, %ymm5
vperm2i128 $49, %ymm10, %ymm8, %ymm6
vperm2i128 $49, %ymm11, %ymm9, %ymm7
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm4, 96(%rsi)
movq %rax, 128(%rsi)
vmovdqu %ymm1, 64(%rdx)
vmovdqu %ymm5, 96(%rdx)
movq %r9, 128(%rdx)
vmovdqu %ymm2, 64(%rcx)
vmovdqu %ymm6, 96(%rcx)
movq %r10, 128(%rcx)
vmovdqu %ymm3, 64(%r8)
vmovdqu %ymm7, 96(%r8)
movq %r11, 128(%r8)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_redistribute_17_rand_avx2,.-mlkem_redistribute_17_rand_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_redistribute_16_rand_avx2
.type mlkem_redistribute_16_rand_avx2,@function
.align 16
mlkem_redistribute_16_rand_avx2:
#else
.section __TEXT,__text
.globl _mlkem_redistribute_16_rand_avx2
.p2align 4
_mlkem_redistribute_16_rand_avx2:
#endif /* __APPLE__ */
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vmovdqu 192(%rdi), %ymm6
vmovdqu 224(%rdi), %ymm7
vpunpcklqdq %ymm1, %ymm0, %ymm8
vpunpckhqdq %ymm1, %ymm0, %ymm9
vpunpcklqdq %ymm3, %ymm2, %ymm10
vpunpckhqdq %ymm3, %ymm2, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm0
vperm2i128 $32, %ymm11, %ymm9, %ymm1
vperm2i128 $49, %ymm10, %ymm8, %ymm2
vperm2i128 $49, %ymm11, %ymm9, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm8
vpunpckhqdq %ymm5, %ymm4, %ymm9
vpunpcklqdq %ymm7, %ymm6, %ymm10
vpunpckhqdq %ymm7, %ymm6, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm4
vperm2i128 $32, %ymm11, %ymm9, %ymm5
vperm2i128 $49, %ymm10, %ymm8, %ymm6
vperm2i128 $49, %ymm11, %ymm9, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm4, 32(%rsi)
vmovdqu %ymm1, (%rdx)
vmovdqu %ymm5, 32(%rdx)
vmovdqu %ymm2, (%rcx)
vmovdqu %ymm6, 32(%rcx)
vmovdqu %ymm3, (%r8)
vmovdqu %ymm7, 32(%r8)
vmovdqu 256(%rdi), %ymm0
vmovdqu 288(%rdi), %ymm1
vmovdqu 320(%rdi), %ymm2
vmovdqu 352(%rdi), %ymm3
vmovdqu 384(%rdi), %ymm4
vmovdqu 416(%rdi), %ymm5
vmovdqu 448(%rdi), %ymm6
vmovdqu 480(%rdi), %ymm7
vpunpcklqdq %ymm1, %ymm0, %ymm8
vpunpckhqdq %ymm1, %ymm0, %ymm9
vpunpcklqdq %ymm3, %ymm2, %ymm10
vpunpckhqdq %ymm3, %ymm2, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm0
vperm2i128 $32, %ymm11, %ymm9, %ymm1
vperm2i128 $49, %ymm10, %ymm8, %ymm2
vperm2i128 $49, %ymm11, %ymm9, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm8
vpunpckhqdq %ymm5, %ymm4, %ymm9
vpunpcklqdq %ymm7, %ymm6, %ymm10
vpunpckhqdq %ymm7, %ymm6, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm4
vperm2i128 $32, %ymm11, %ymm9, %ymm5
vperm2i128 $49, %ymm10, %ymm8, %ymm6
vperm2i128 $49, %ymm11, %ymm9, %ymm7
vmovdqu %ymm0, 64(%rsi)
vmovdqu %ymm4, 96(%rsi)
vmovdqu %ymm1, 64(%rdx)
vmovdqu %ymm5, 96(%rdx)
vmovdqu %ymm2, 64(%rcx)
vmovdqu %ymm6, 96(%rcx)
vmovdqu %ymm3, 64(%r8)
vmovdqu %ymm7, 96(%r8)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_redistribute_16_rand_avx2,.-mlkem_redistribute_16_rand_avx2
#endif /* __APPLE__ */
#ifndef __APPLE__
.text
.globl mlkem_redistribute_8_rand_avx2
.type mlkem_redistribute_8_rand_avx2,@function
.align 16
mlkem_redistribute_8_rand_avx2:
#else
.section __TEXT,__text
.globl _mlkem_redistribute_8_rand_avx2
.p2align 4
_mlkem_redistribute_8_rand_avx2:
#endif /* __APPLE__ */
vmovdqu (%rdi), %ymm0
vmovdqu 32(%rdi), %ymm1
vmovdqu 64(%rdi), %ymm2
vmovdqu 96(%rdi), %ymm3
vmovdqu 128(%rdi), %ymm4
vmovdqu 160(%rdi), %ymm5
vmovdqu 192(%rdi), %ymm6
vmovdqu 224(%rdi), %ymm7
vpunpcklqdq %ymm1, %ymm0, %ymm8
vpunpckhqdq %ymm1, %ymm0, %ymm9
vpunpcklqdq %ymm3, %ymm2, %ymm10
vpunpckhqdq %ymm3, %ymm2, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm0
vperm2i128 $32, %ymm11, %ymm9, %ymm1
vperm2i128 $49, %ymm10, %ymm8, %ymm2
vperm2i128 $49, %ymm11, %ymm9, %ymm3
vpunpcklqdq %ymm5, %ymm4, %ymm8
vpunpckhqdq %ymm5, %ymm4, %ymm9
vpunpcklqdq %ymm7, %ymm6, %ymm10
vpunpckhqdq %ymm7, %ymm6, %ymm11
vperm2i128 $32, %ymm10, %ymm8, %ymm4
vperm2i128 $32, %ymm11, %ymm9, %ymm5
vperm2i128 $49, %ymm10, %ymm8, %ymm6
vperm2i128 $49, %ymm11, %ymm9, %ymm7
vmovdqu %ymm0, (%rsi)
vmovdqu %ymm4, 32(%rsi)
vmovdqu %ymm1, (%rdx)
vmovdqu %ymm5, 32(%rdx)
vmovdqu %ymm2, (%rcx)
vmovdqu %ymm6, 32(%rcx)
vmovdqu %ymm3, (%r8)
vmovdqu %ymm7, 32(%r8)
vzeroupper
repz retq
#ifndef __APPLE__
.size mlkem_redistribute_8_rand_avx2,.-mlkem_redistribute_8_rand_avx2
#endif /* __APPLE__ */
#endif /* HAVE_INTEL_AVX2 */
#endif /* WOLFSSL_WC_MLKEM */
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif