From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web12.2897.1626867910586193470 for ; Wed, 21 Jul 2021 04:45:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=oqxo/Py/; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="272532863" X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="272532863" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2021 04:45:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,258,1620716400"; d="scan'208";a="576666413" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga001.fm.intel.com with ESMTP; 21 Jul 2021 04:45:07 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 21 Jul 2021 04:45:06 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 21 Jul 2021 04:45:05 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Wed, 21 Jul 2021 04:45:05 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.175) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Wed, 21 Jul 2021 04:45:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZU+tPr8TLIsTHqfSApg5cn+CInkwUhlqdc5zMYi7krioYXIz7FsDUurqKQoWVlZJtvAecZj35uRJ51DqEK0uiKMQNiPu4bW1nSbSRY2svRvSd2uIvGGl4DMF/aslgcO9U6BglxMVHq1wXMjh9IfKUcPz5CGSmemuTqMeJLV9no07spH0GFSdJvnUePuKr/qeZm/Pk0qfb/bEDwvFtAGz67kOQiovvVaccyd0Z3xvSNcfaFK8eOMb7DR8zrw+jmCcycqPTMbxejmByqQSFXp9xZwzNcBDwupUCMgyusXGLC657H8OAubQ63UHtiWDBEjxXY07OOj1cu9ImJBFl+/0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Eb9M22Q2yPsfrTBmh6hrGb2qzVCFBKSavprwx35Un+Q=; b=ocKVRmiPqi4D1Jah18lizpD/udP/YPFHNr1cHcFqRybBWQcln/KIOw5dxBSY19z63NdMiGINJsbf5qvS2uP1gg68xEorDwJr+h6B2xzXxkjEKzl2PlPNxS/+7lFMWmdvoCNXz4GDOaiMPORg1KytQGpS+QVwSsTwAJJctqFW/SQRO393LPWTfKYsEeLAOFE5gGKhNZsSYn24V4suVTDkmMC8prF2cgeTMZVt/pr4s+UCgCJiEHaN6zT0wqr2UinTvpwHl4gJ1GQzQXGb4hHRJFDwPEKI1+z3VlmUNYj+M4yJ2kJXZJmS3NfrKo2WoAMiatyN/rRI2vEJZBvcu2mwoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Eb9M22Q2yPsfrTBmh6hrGb2qzVCFBKSavprwx35Un+Q=; b=oqxo/Py/1CpeYgTqAgZJ2wXhNtf+iAF6/1WknBwrGq+DGNcmXBr+m1/Ga+PzTzm2aLfQSNXUrQierVkMrezmH/m42Jbk3JKtsZYBrjDMAQsTkpAu6Dnj9kGcYUUo4KlbjrEpQmm6U9hcWar21T+XXambEDNsPhqPSlbMp3gcu/8= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB5079.namprd11.prod.outlook.com (2603:10b6:510:3d::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21; Wed, 21 Jul 2021 11:44:48 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121%3]) with mapi id 15.20.4331.034; Wed, 21 Jul 2021 11:44:48 +0000 From: "Yao, Jiewen" To: "christopher.zurcher@outlook.com" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Lu, XiaoyuX" , "Kinney, Michael D" , "Ard Biesheuvel" Subject: Re: [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64 Thread-Topic: [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64 Thread-Index: AQHXfbPFpGVQFezROE6Hc4zFZgKEV6tNUBjQ Date: Wed, 21 Jul 2021 11:44:47 +0000 Message-ID: References: <20210720220646.659-1-christopher.zurcher@outlook.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bc6b0c27-8325-4a23-2490-08d94c3cf1b8 x-ms-traffictypediagnostic: PH0PR11MB5079: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HWXYbYuksOaqn2gNjR78LnoLhG1evelnsI1sy5gYf+jE9X9nrRwUO+gLhm1z0P9wryMeoovWD5IyIaZfDwjgVqltA/lZEZThqJY9YCYXcAmEMvipTUVtMBqjGigJ9wL9D6nYN8eh+ULPxD+In4kdRWyULvpR4T2uux/54LIxPYadgziiC+TDq5WDpwp6aOBUPQhdXEaqFVk2hyu2GdImrgRGa+QmJF0q4fxD3Vvvl/nV/JEupLcdat7TjGjcaw4436SmqCV2wjB16Tc9apP2lPCmDbE6IePKx1paTvP2nGNeU4XR2qWahCVQTyzZvRk3jNExAreD5peqWCao0yOL9BZ7/czeHWJAWaoCOPIZ8q4tfv34PTa79LFrV4MXXQGmR/HsNO01ii7CIYGJZmyzNVRqC4A6yHJdPlp6R+1xKGYp5S31Yz21FmTKCTgpTWxD2jB9cL0Gd8x86wmxO+fXc7Mu0Hdw3tdLmG+GRX8h1NOtObI70ZD/Fd4cqPRQ7zDHYRuEWMv+yZOewIoN3M8enZRMtu45XL64oNHVb+bWIBZzv1bYaUO7IMCjpSJxsxebWJmR/n8lBG8+Kc/MWoCKOBQE+xXEc0EdWA9+slM3xwnpmxYrjRW8PFqIx/tHm0Xmzl7CvdBg2wag5c4ZAfmv692d6VScLw7EPLVKGEGdjAcTwTB0rEqp8rfUPmjJuAdcM0hcgLtL0kAJrEaxblXBVD9AwmAlm6dxmpo3RgE5za4lQFiAec3Rfna76L8gyfMTrOoFumkZnVLpSJWgzw7Nng41SYNZtHZMFYpROHUcQZ8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(39860400002)(376002)(396003)(366004)(136003)(7696005)(110136005)(33656002)(478600001)(186003)(26005)(66446008)(86362001)(8936002)(122000001)(5660300002)(64756008)(45080400002)(8676002)(4326008)(30864003)(2906002)(71200400001)(966005)(66556008)(66476007)(76116006)(316002)(66946007)(6506007)(53546011)(55016002)(9686003)(54906003)(38100700002)(52536014)(83380400001)(38070700004)(579004)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?ck1opnVASZiTXi59IVU0TcM1DMVKsep8RnBdsyjncou72jWefnrX4d/jku9O?= =?us-ascii?Q?fLNEy5uLTJQrR0rSafIJyFIHXvzmrqA3OYgxnrC0xMUgzmUL6YKhp03MDiqx?= =?us-ascii?Q?2G+BtkLiERAPYUVkK+fJYka9aFKA7CrmRgTspFnX7BeEBdZ/hTTgDedHw5+x?= =?us-ascii?Q?4JbVtN88l/abZOXUr3j2OysRcGDblXMSzG2gJXSuEMTHkx+zvViLj+9Pm4fA?= =?us-ascii?Q?fMTcgigXMTppyM18tjR00zKurantolrRMCK7fikSZad3TRj/4Iyzg4fv5aJ0?= =?us-ascii?Q?T1bSIAu+ycnp7UOtz1rFch42AxsN1npVX4zQDLB7dkC+76qGIW/5jJAZJVpp?= =?us-ascii?Q?vMm5l8zxgOgQXXa16PFy7lCWFAahSlb9SN4QMNw3feEyU+7BnFmBcXGUzpZu?= =?us-ascii?Q?4cAWaoTuyd/kePl00zy8yZV/YeW9Bka2CMc8oUnyWDLxDGrnrRfQI+Qesprm?= =?us-ascii?Q?yI2f1k4n/xXKE63aYWRVIlketI/ZCSRvOpfzWFbzXRqsUX5P1phNUGcMRcKg?= =?us-ascii?Q?6+5F6LN/JrZWw63XmmmaF+K/A2dVLm78BCVB7AHtGBceXUo06ugb9nXKxeuF?= =?us-ascii?Q?LpirVohGPOdt6Cb/gNBs7/eJvAa7o+tkYA4EGMPQEEmpED53+6zYoF9wrEjI?= =?us-ascii?Q?taeHhnfk+v46PqinvzTOAb8ywiBTdKW6KMUm+wY8zGDzdftVKc3ldcH4cPnd?= =?us-ascii?Q?9OphqRclu3P+jCCjMx4cNwDO0ZXwBwUX7m8lKlSRA7259NHjNA9M6TQYVBXR?= =?us-ascii?Q?OPlJEX+hNano83qjVjfJ/Pm9FNQx7ycJS3tZMYjd/BqTArXumXC8Bs8rvv3u?= =?us-ascii?Q?YTSDs/qTCtlRcrZVLecTzQbjGD2DS8lMapMvC7OLkNQu1OVeCsPi4u5M9md0?= =?us-ascii?Q?w4CBrOKrTXKUk+dxsnP+tGZZAwbQxsi4M8Hkbhdrs3z384nDK1qUd7DqI0VY?= =?us-ascii?Q?VTGlV8eLYxtGGi2JE82PAAbH8WPR8yyEsU8cQu80Tys1QnZJmkSOZ9a/y8ok?= =?us-ascii?Q?3Doh919Z/qIuXoQJtZdHJdcwNVd+cWBTBKtmdFivBDP7I9ZziqjQsZga5AJc?= =?us-ascii?Q?3J0vwzF/nUzpV48kJTztBjCWyXQ2F0S+dwVsni7wTfcGdAVn0+EdDdu6Wvv3?= =?us-ascii?Q?Vzk8eyHscDzYY5jD0s4cQTk9m294R0jS23bAlL3qvl4ARgiMMsxq1t85QJDW?= =?us-ascii?Q?f6+dWoaxM+1dfVersVSc0FyOMhhGNN5QjKhUnmMzcHLC+zwbOh9yUkdtJ9ld?= =?us-ascii?Q?J8yfY7NxaM9u+mHnFnjoai9r8CgJZ1zSjL/woX1w9Cz3W2IxoxISPgfJ+kDO?= =?us-ascii?Q?wqs2pQNjED8YGkMX4NdhVTnF?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc6b0c27-8325-4a23-2490-08d94c3cf1b8 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jul 2021 11:44:48.0041 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: R47bHAK4zrnLEmQ/uMTCdueg5zACusmoS7jmRDnA1kgWAfdMmpeJybv6V1X9o4J2nI9DbPVyyA98Qc9Go0t9+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5079 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Jiewen Yao > -----Original Message----- > From: christopher.zurcher@outlook.com > Sent: Wednesday, July 21, 2021 6:07 AM > To: devel@edk2.groups.io > Cc: Yao, Jiewen ; Wang, Jian J ; > Lu, XiaoyuX ; Kinney, Michael D > ; Ard Biesheuvel > Subject: [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated > assembly files for X64 >=20 > From: Christopher Zurcher >=20 > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2507 >=20 > Adding the auto-generated assembly files for X64 architectures. >=20 > Cc: Jiewen Yao > Cc: Jian J Wang > Cc: Xiaoyu Lu > Cc: Mike Kinney > Cc: Ard Biesheuvel > Signed-off-by: Christopher Zurcher > --- > CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm | = 732 > +++ > CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm | > 1916 ++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm | > 78 + > CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm | 5= 103 > ++++++++++++++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm | 1= 173 > +++++ > CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm-x86_64.nasm | > 34 + > CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm | > 1569 ++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm | 3= 137 > ++++++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm | 2= 884 > +++++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm | > 3461 +++++++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm | 3= 313 > +++++++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm | 1= 938 > ++++++++ > CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm | = 491 ++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb-x86_64.S | = 552 > +++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S | 1= 719 > +++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.S | = 69 > + > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S | 4= 484 > +++++++++++++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S | = 863 > ++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-x86_64.S | > 29 + > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S | 1= 386 > ++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S | 2= 962 > ++++++++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S | 2= 631 > ++++++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S | > 3286 +++++++++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S | 3= 097 > ++++++++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S | 1= 811 > +++++++ > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S | = 491 ++ > 26 files changed, 49209 insertions(+) >=20 > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb- > x86_64.nasm > new file mode 100644 > index 0000000000..1a3ed1dd35 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm > @@ -0,0 +1,732 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl > +; > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > + > +global aesni_multi_cbc_encrypt > + > +ALIGN 32 > +aesni_multi_cbc_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_multi_cbc_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[64+rsp],xmm10 > + movaps XMMWORD[80+rsp],xmm11 > + movaps XMMWORD[96+rsp],xmm12 > + movaps XMMWORD[(-104)+rax],xmm13 > + movaps XMMWORD[(-88)+rax],xmm14 > + movaps XMMWORD[(-72)+rax],xmm15 > + > + > + > + > + > + > + sub rsp,48 > + and rsp,-64 > + mov QWORD[16+rsp],rax > + > + > +$L$enc4x_body: > + movdqu xmm12,XMMWORD[rsi] > + lea rsi,[120+rsi] > + lea rdi,[80+rdi] > + > +$L$enc4x_loop_grande: > + mov DWORD[24+rsp],edx > + xor edx,edx > + mov ecx,DWORD[((-64))+rdi] > + mov r8,QWORD[((-80))+rdi] > + cmp ecx,edx > + mov r12,QWORD[((-72))+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm2,XMMWORD[((-56))+rdi] > + mov DWORD[32+rsp],ecx > + cmovle r8,rsp > + mov ecx,DWORD[((-24))+rdi] > + mov r9,QWORD[((-40))+rdi] > + cmp ecx,edx > + mov r13,QWORD[((-32))+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm3,XMMWORD[((-16))+rdi] > + mov DWORD[36+rsp],ecx > + cmovle r9,rsp > + mov ecx,DWORD[16+rdi] > + mov r10,QWORD[rdi] > + cmp ecx,edx > + mov r14,QWORD[8+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm4,XMMWORD[24+rdi] > + mov DWORD[40+rsp],ecx > + cmovle r10,rsp > + mov ecx,DWORD[56+rdi] > + mov r11,QWORD[40+rdi] > + cmp ecx,edx > + mov r15,QWORD[48+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm5,XMMWORD[64+rdi] > + mov DWORD[44+rsp],ecx > + cmovle r11,rsp > + test edx,edx > + jz NEAR $L$enc4x_done > + > + movups xmm1,XMMWORD[((16-120))+rsi] > + pxor xmm2,xmm12 > + movups xmm0,XMMWORD[((32-120))+rsi] > + pxor xmm3,xmm12 > + mov eax,DWORD[((240-120))+rsi] > + pxor xmm4,xmm12 > + movdqu xmm6,XMMWORD[r8] > + pxor xmm5,xmm12 > + movdqu xmm7,XMMWORD[r9] > + pxor xmm2,xmm6 > + movdqu xmm8,XMMWORD[r10] > + pxor xmm3,xmm7 > + movdqu xmm9,XMMWORD[r11] > + pxor xmm4,xmm8 > + pxor xmm5,xmm9 > + movdqa xmm10,XMMWORD[32+rsp] > + xor rbx,rbx > + jmp NEAR $L$oop_enc4x > + > +ALIGN 32 > +$L$oop_enc4x: > + add rbx,16 > + lea rbp,[16+rsp] > + mov ecx,1 > + sub rbp,rbx > + > +DB 102,15,56,220,209 > + prefetcht0 [31+rbx*1+r8] > + prefetcht0 [31+rbx*1+r9] > +DB 102,15,56,220,217 > + prefetcht0 [31+rbx*1+r10] > + prefetcht0 [31+rbx*1+r10] > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((48-120))+rsi] > + cmp ecx,DWORD[32+rsp] > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > + cmovge r8,rbp > + cmovg r12,rbp > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((-56))+rsi] > + cmp ecx,DWORD[36+rsp] > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > + cmovge r9,rbp > + cmovg r13,rbp > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((-40))+rsi] > + cmp ecx,DWORD[40+rsp] > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > + cmovge r10,rbp > + cmovg r14,rbp > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((-24))+rsi] > + cmp ecx,DWORD[44+rsp] > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > + cmovge r11,rbp > + cmovg r15,rbp > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((-8))+rsi] > + movdqa xmm11,xmm10 > +DB 102,15,56,220,208 > + prefetcht0 [15+rbx*1+r12] > + prefetcht0 [15+rbx*1+r13] > +DB 102,15,56,220,216 > + prefetcht0 [15+rbx*1+r14] > + prefetcht0 [15+rbx*1+r15] > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((128-120))+rsi] > + pxor xmm12,xmm12 > + > +DB 102,15,56,220,209 > + pcmpgtd xmm11,xmm12 > + movdqu xmm12,XMMWORD[((-120))+rsi] > +DB 102,15,56,220,217 > + paddd xmm10,xmm11 > + movdqa XMMWORD[32+rsp],xmm10 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((144-120))+rsi] > + > + cmp eax,11 > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((160-120))+rsi] > + > + jb NEAR $L$enc4x_tail > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((176-120))+rsi] > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((192-120))+rsi] > + > + je NEAR $L$enc4x_tail > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[((208-120))+rsi] > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((224-120))+rsi] > + jmp NEAR $L$enc4x_tail > + > +ALIGN 32 > +$L$enc4x_tail: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movdqu xmm6,XMMWORD[rbx*1+r8] > + movdqu xmm1,XMMWORD[((16-120))+rsi] > + > +DB 102,15,56,221,208 > + movdqu xmm7,XMMWORD[rbx*1+r9] > + pxor xmm6,xmm12 > +DB 102,15,56,221,216 > + movdqu xmm8,XMMWORD[rbx*1+r10] > + pxor xmm7,xmm12 > +DB 102,15,56,221,224 > + movdqu xmm9,XMMWORD[rbx*1+r11] > + pxor xmm8,xmm12 > +DB 102,15,56,221,232 > + movdqu xmm0,XMMWORD[((32-120))+rsi] > + pxor xmm9,xmm12 > + > + movups XMMWORD[(-16)+rbx*1+r12],xmm2 > + pxor xmm2,xmm6 > + movups XMMWORD[(-16)+rbx*1+r13],xmm3 > + pxor xmm3,xmm7 > + movups XMMWORD[(-16)+rbx*1+r14],xmm4 > + pxor xmm4,xmm8 > + movups XMMWORD[(-16)+rbx*1+r15],xmm5 > + pxor xmm5,xmm9 > + > + dec edx > + jnz NEAR $L$oop_enc4x > + > + mov rax,QWORD[16+rsp] > + > + mov edx,DWORD[24+rsp] > + > + > + > + > + > + > + > + > + > + > + lea rdi,[160+rdi] > + dec edx > + jnz NEAR $L$enc4x_loop_grande > + > +$L$enc4x_done: > + movaps xmm6,XMMWORD[((-216))+rax] > + movaps xmm7,XMMWORD[((-200))+rax] > + movaps xmm8,XMMWORD[((-184))+rax] > + movaps xmm9,XMMWORD[((-168))+rax] > + movaps xmm10,XMMWORD[((-152))+rax] > + movaps xmm11,XMMWORD[((-136))+rax] > + movaps xmm12,XMMWORD[((-120))+rax] > + > + > + > + mov r15,QWORD[((-48))+rax] > + > + mov r14,QWORD[((-40))+rax] > + > + mov r13,QWORD[((-32))+rax] > + > + mov r12,QWORD[((-24))+rax] > + > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$enc4x_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_multi_cbc_encrypt: > + > +global aesni_multi_cbc_decrypt > + > +ALIGN 32 > +aesni_multi_cbc_decrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_multi_cbc_decrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[64+rsp],xmm10 > + movaps XMMWORD[80+rsp],xmm11 > + movaps XMMWORD[96+rsp],xmm12 > + movaps XMMWORD[(-104)+rax],xmm13 > + movaps XMMWORD[(-88)+rax],xmm14 > + movaps XMMWORD[(-72)+rax],xmm15 > + > + > + > + > + > + > + sub rsp,48 > + and rsp,-64 > + mov QWORD[16+rsp],rax > + > + > +$L$dec4x_body: > + movdqu xmm12,XMMWORD[rsi] > + lea rsi,[120+rsi] > + lea rdi,[80+rdi] > + > +$L$dec4x_loop_grande: > + mov DWORD[24+rsp],edx > + xor edx,edx > + mov ecx,DWORD[((-64))+rdi] > + mov r8,QWORD[((-80))+rdi] > + cmp ecx,edx > + mov r12,QWORD[((-72))+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm6,XMMWORD[((-56))+rdi] > + mov DWORD[32+rsp],ecx > + cmovle r8,rsp > + mov ecx,DWORD[((-24))+rdi] > + mov r9,QWORD[((-40))+rdi] > + cmp ecx,edx > + mov r13,QWORD[((-32))+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm7,XMMWORD[((-16))+rdi] > + mov DWORD[36+rsp],ecx > + cmovle r9,rsp > + mov ecx,DWORD[16+rdi] > + mov r10,QWORD[rdi] > + cmp ecx,edx > + mov r14,QWORD[8+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm8,XMMWORD[24+rdi] > + mov DWORD[40+rsp],ecx > + cmovle r10,rsp > + mov ecx,DWORD[56+rdi] > + mov r11,QWORD[40+rdi] > + cmp ecx,edx > + mov r15,QWORD[48+rdi] > + cmovg edx,ecx > + test ecx,ecx > + movdqu xmm9,XMMWORD[64+rdi] > + mov DWORD[44+rsp],ecx > + cmovle r11,rsp > + test edx,edx > + jz NEAR $L$dec4x_done > + > + movups xmm1,XMMWORD[((16-120))+rsi] > + movups xmm0,XMMWORD[((32-120))+rsi] > + mov eax,DWORD[((240-120))+rsi] > + movdqu xmm2,XMMWORD[r8] > + movdqu xmm3,XMMWORD[r9] > + pxor xmm2,xmm12 > + movdqu xmm4,XMMWORD[r10] > + pxor xmm3,xmm12 > + movdqu xmm5,XMMWORD[r11] > + pxor xmm4,xmm12 > + pxor xmm5,xmm12 > + movdqa xmm10,XMMWORD[32+rsp] > + xor rbx,rbx > + jmp NEAR $L$oop_dec4x > + > +ALIGN 32 > +$L$oop_dec4x: > + add rbx,16 > + lea rbp,[16+rsp] > + mov ecx,1 > + sub rbp,rbx > + > +DB 102,15,56,222,209 > + prefetcht0 [31+rbx*1+r8] > + prefetcht0 [31+rbx*1+r9] > +DB 102,15,56,222,217 > + prefetcht0 [31+rbx*1+r10] > + prefetcht0 [31+rbx*1+r11] > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((48-120))+rsi] > + cmp ecx,DWORD[32+rsp] > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > + cmovge r8,rbp > + cmovg r12,rbp > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((-56))+rsi] > + cmp ecx,DWORD[36+rsp] > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > + cmovge r9,rbp > + cmovg r13,rbp > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((-40))+rsi] > + cmp ecx,DWORD[40+rsp] > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > + cmovge r10,rbp > + cmovg r14,rbp > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((-24))+rsi] > + cmp ecx,DWORD[44+rsp] > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > + cmovge r11,rbp > + cmovg r15,rbp > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((-8))+rsi] > + movdqa xmm11,xmm10 > +DB 102,15,56,222,208 > + prefetcht0 [15+rbx*1+r12] > + prefetcht0 [15+rbx*1+r13] > +DB 102,15,56,222,216 > + prefetcht0 [15+rbx*1+r14] > + prefetcht0 [15+rbx*1+r15] > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((128-120))+rsi] > + pxor xmm12,xmm12 > + > +DB 102,15,56,222,209 > + pcmpgtd xmm11,xmm12 > + movdqu xmm12,XMMWORD[((-120))+rsi] > +DB 102,15,56,222,217 > + paddd xmm10,xmm11 > + movdqa XMMWORD[32+rsp],xmm10 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((144-120))+rsi] > + > + cmp eax,11 > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((160-120))+rsi] > + > + jb NEAR $L$dec4x_tail > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((176-120))+rsi] > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((192-120))+rsi] > + > + je NEAR $L$dec4x_tail > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[((208-120))+rsi] > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((224-120))+rsi] > + jmp NEAR $L$dec4x_tail > + > +ALIGN 32 > +$L$dec4x_tail: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > + pxor xmm6,xmm0 > + pxor xmm7,xmm0 > +DB 102,15,56,222,233 > + movdqu xmm1,XMMWORD[((16-120))+rsi] > + pxor xmm8,xmm0 > + pxor xmm9,xmm0 > + movdqu xmm0,XMMWORD[((32-120))+rsi] > + > +DB 102,15,56,223,214 > +DB 102,15,56,223,223 > + movdqu xmm6,XMMWORD[((-16))+rbx*1+r8] > + movdqu xmm7,XMMWORD[((-16))+rbx*1+r9] > +DB 102,65,15,56,223,224 > +DB 102,65,15,56,223,233 > + movdqu xmm8,XMMWORD[((-16))+rbx*1+r10] > + movdqu xmm9,XMMWORD[((-16))+rbx*1+r11] > + > + movups XMMWORD[(-16)+rbx*1+r12],xmm2 > + movdqu xmm2,XMMWORD[rbx*1+r8] > + movups XMMWORD[(-16)+rbx*1+r13],xmm3 > + movdqu xmm3,XMMWORD[rbx*1+r9] > + pxor xmm2,xmm12 > + movups XMMWORD[(-16)+rbx*1+r14],xmm4 > + movdqu xmm4,XMMWORD[rbx*1+r10] > + pxor xmm3,xmm12 > + movups XMMWORD[(-16)+rbx*1+r15],xmm5 > + movdqu xmm5,XMMWORD[rbx*1+r11] > + pxor xmm4,xmm12 > + pxor xmm5,xmm12 > + > + dec edx > + jnz NEAR $L$oop_dec4x > + > + mov rax,QWORD[16+rsp] > + > + mov edx,DWORD[24+rsp] > + > + lea rdi,[160+rdi] > + dec edx > + jnz NEAR $L$dec4x_loop_grande > + > +$L$dec4x_done: > + movaps xmm6,XMMWORD[((-216))+rax] > + movaps xmm7,XMMWORD[((-200))+rax] > + movaps xmm8,XMMWORD[((-184))+rax] > + movaps xmm9,XMMWORD[((-168))+rax] > + movaps xmm10,XMMWORD[((-152))+rax] > + movaps xmm11,XMMWORD[((-136))+rax] > + movaps xmm12,XMMWORD[((-120))+rax] > + > + > + > + mov r15,QWORD[((-48))+rax] > + > + mov r14,QWORD[((-40))+rax] > + > + mov r13,QWORD[((-32))+rax] > + > + mov r12,QWORD[((-24))+rax] > + > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$dec4x_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_multi_cbc_decrypt: > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + mov rax,QWORD[16+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov r15,QWORD[((-48))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + mov QWORD[240+r8],r15 > + > + lea rsi,[((-56-160))+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase > + DD $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase > + DD $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase > + DD $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase > + DD $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase > + DD $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_aesni_multi_cbc_encrypt: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue > wrt ..imagebase > +$L$SEH_info_aesni_multi_cbc_decrypt: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1- > x86_64.nasm > new file mode 100644 > index 0000000000..f4fd9ca50d > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm > @@ -0,0 +1,1916 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl > +; > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > +EXTERN OPENSSL_ia32cap_P > + > +global aesni_cbc_sha1_enc > + > +ALIGN 32 > +aesni_cbc_sha1_enc: > + > + > + mov r10d,DWORD[((OPENSSL_ia32cap_P+0))] > + mov r11,QWORD[((OPENSSL_ia32cap_P+4))] > + bt r11,61 > + jc NEAR aesni_cbc_sha1_enc_shaext > + jmp NEAR aesni_cbc_sha1_enc_ssse3 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 32 > +aesni_cbc_sha1_enc_ssse3: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + mov r10,QWORD[56+rsp] > + > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + lea rsp,[((-264))+rsp] > + > + > + > + movaps XMMWORD[(96+0)+rsp],xmm6 > + movaps XMMWORD[(96+16)+rsp],xmm7 > + movaps XMMWORD[(96+32)+rsp],xmm8 > + movaps XMMWORD[(96+48)+rsp],xmm9 > + movaps XMMWORD[(96+64)+rsp],xmm10 > + movaps XMMWORD[(96+80)+rsp],xmm11 > + movaps XMMWORD[(96+96)+rsp],xmm12 > + movaps XMMWORD[(96+112)+rsp],xmm13 > + movaps XMMWORD[(96+128)+rsp],xmm14 > + movaps XMMWORD[(96+144)+rsp],xmm15 > +$L$prologue_ssse3: > + mov r12,rdi > + mov r13,rsi > + mov r14,rdx > + lea r15,[112+rcx] > + movdqu xmm2,XMMWORD[r8] > + mov QWORD[88+rsp],r8 > + shl r14,6 > + sub r13,r12 > + mov r8d,DWORD[((240-112))+r15] > + add r14,r10 > + > + lea r11,[K_XX_XX] > + mov eax,DWORD[r9] > + mov ebx,DWORD[4+r9] > + mov ecx,DWORD[8+r9] > + mov edx,DWORD[12+r9] > + mov esi,ebx > + mov ebp,DWORD[16+r9] > + mov edi,ecx > + xor edi,edx > + and esi,edi > + > + movdqa xmm3,XMMWORD[64+r11] > + movdqa xmm13,XMMWORD[r11] > + movdqu xmm4,XMMWORD[r10] > + movdqu xmm5,XMMWORD[16+r10] > + movdqu xmm6,XMMWORD[32+r10] > + movdqu xmm7,XMMWORD[48+r10] > +DB 102,15,56,0,227 > +DB 102,15,56,0,235 > +DB 102,15,56,0,243 > + add r10,64 > + paddd xmm4,xmm13 > +DB 102,15,56,0,251 > + paddd xmm5,xmm13 > + paddd xmm6,xmm13 > + movdqa XMMWORD[rsp],xmm4 > + psubd xmm4,xmm13 > + movdqa XMMWORD[16+rsp],xmm5 > + psubd xmm5,xmm13 > + movdqa XMMWORD[32+rsp],xmm6 > + psubd xmm6,xmm13 > + movups xmm15,XMMWORD[((-112))+r15] > + movups xmm0,XMMWORD[((16-112))+r15] > + jmp NEAR $L$oop_ssse3 > +ALIGN 32 > +$L$oop_ssse3: > + ror ebx,2 > + movups xmm14,XMMWORD[r12] > + xorps xmm14,xmm15 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+r15] > +DB 102,15,56,220,208 > + pshufd xmm8,xmm4,238 > + xor esi,edx > + movdqa xmm12,xmm7 > + paddd xmm13,xmm7 > + mov edi,eax > + add ebp,DWORD[rsp] > + punpcklqdq xmm8,xmm5 > + xor ebx,ecx > + rol eax,5 > + add ebp,esi > + psrldq xmm12,4 > + and edi,ebx > + xor ebx,ecx > + pxor xmm8,xmm4 > + add ebp,eax > + ror eax,7 > + pxor xmm12,xmm6 > + xor edi,ecx > + mov esi,ebp > + add edx,DWORD[4+rsp] > + pxor xmm8,xmm12 > + xor eax,ebx > + rol ebp,5 > + movdqa XMMWORD[48+rsp],xmm13 > + add edx,edi > + movups xmm0,XMMWORD[((-64))+r15] > +DB 102,15,56,220,209 > + and esi,eax > + movdqa xmm3,xmm8 > + xor eax,ebx > + add edx,ebp > + ror ebp,7 > + movdqa xmm12,xmm8 > + xor esi,ebx > + pslldq xmm3,12 > + paddd xmm8,xmm8 > + mov edi,edx > + add ecx,DWORD[8+rsp] > + psrld xmm12,31 > + xor ebp,eax > + rol edx,5 > + add ecx,esi > + movdqa xmm13,xmm3 > + and edi,ebp > + xor ebp,eax > + psrld xmm3,30 > + add ecx,edx > + ror edx,7 > + por xmm8,xmm12 > + xor edi,eax > + mov esi,ecx > + add ebx,DWORD[12+rsp] > + movups xmm1,XMMWORD[((-48))+r15] > +DB 102,15,56,220,208 > + pslld xmm13,2 > + pxor xmm8,xmm3 > + xor edx,ebp > + movdqa xmm3,XMMWORD[r11] > + rol ecx,5 > + add ebx,edi > + and esi,edx > + pxor xmm8,xmm13 > + xor edx,ebp > + add ebx,ecx > + ror ecx,7 > + pshufd xmm9,xmm5,238 > + xor esi,ebp > + movdqa xmm13,xmm8 > + paddd xmm3,xmm8 > + mov edi,ebx > + add eax,DWORD[16+rsp] > + punpcklqdq xmm9,xmm6 > + xor ecx,edx > + rol ebx,5 > + add eax,esi > + psrldq xmm13,4 > + and edi,ecx > + xor ecx,edx > + pxor xmm9,xmm5 > + add eax,ebx > + ror ebx,7 > + movups xmm0,XMMWORD[((-32))+r15] > +DB 102,15,56,220,209 > + pxor xmm13,xmm7 > + xor edi,edx > + mov esi,eax > + add ebp,DWORD[20+rsp] > + pxor xmm9,xmm13 > + xor ebx,ecx > + rol eax,5 > + movdqa XMMWORD[rsp],xmm3 > + add ebp,edi > + and esi,ebx > + movdqa xmm12,xmm9 > + xor ebx,ecx > + add ebp,eax > + ror eax,7 > + movdqa xmm13,xmm9 > + xor esi,ecx > + pslldq xmm12,12 > + paddd xmm9,xmm9 > + mov edi,ebp > + add edx,DWORD[24+rsp] > + psrld xmm13,31 > + xor eax,ebx > + rol ebp,5 > + add edx,esi > + movups xmm1,XMMWORD[((-16))+r15] > +DB 102,15,56,220,208 > + movdqa xmm3,xmm12 > + and edi,eax > + xor eax,ebx > + psrld xmm12,30 > + add edx,ebp > + ror ebp,7 > + por xmm9,xmm13 > + xor edi,ebx > + mov esi,edx > + add ecx,DWORD[28+rsp] > + pslld xmm3,2 > + pxor xmm9,xmm12 > + xor ebp,eax > + movdqa xmm12,XMMWORD[16+r11] > + rol edx,5 > + add ecx,edi > + and esi,ebp > + pxor xmm9,xmm3 > + xor ebp,eax > + add ecx,edx > + ror edx,7 > + pshufd xmm10,xmm6,238 > + xor esi,eax > + movdqa xmm3,xmm9 > + paddd xmm12,xmm9 > + mov edi,ecx > + add ebx,DWORD[32+rsp] > + movups xmm0,XMMWORD[r15] > +DB 102,15,56,220,209 > + punpcklqdq xmm10,xmm7 > + xor edx,ebp > + rol ecx,5 > + add ebx,esi > + psrldq xmm3,4 > + and edi,edx > + xor edx,ebp > + pxor xmm10,xmm6 > + add ebx,ecx > + ror ecx,7 > + pxor xmm3,xmm8 > + xor edi,ebp > + mov esi,ebx > + add eax,DWORD[36+rsp] > + pxor xmm10,xmm3 > + xor ecx,edx > + rol ebx,5 > + movdqa XMMWORD[16+rsp],xmm12 > + add eax,edi > + and esi,ecx > + movdqa xmm13,xmm10 > + xor ecx,edx > + add eax,ebx > + ror ebx,7 > + movups xmm1,XMMWORD[16+r15] > +DB 102,15,56,220,208 > + movdqa xmm3,xmm10 > + xor esi,edx > + pslldq xmm13,12 > + paddd xmm10,xmm10 > + mov edi,eax > + add ebp,DWORD[40+rsp] > + psrld xmm3,31 > + xor ebx,ecx > + rol eax,5 > + add ebp,esi > + movdqa xmm12,xmm13 > + and edi,ebx > + xor ebx,ecx > + psrld xmm13,30 > + add ebp,eax > + ror eax,7 > + por xmm10,xmm3 > + xor edi,ecx > + mov esi,ebp > + add edx,DWORD[44+rsp] > + pslld xmm12,2 > + pxor xmm10,xmm13 > + xor eax,ebx > + movdqa xmm13,XMMWORD[16+r11] > + rol ebp,5 > + add edx,edi > + movups xmm0,XMMWORD[32+r15] > +DB 102,15,56,220,209 > + and esi,eax > + pxor xmm10,xmm12 > + xor eax,ebx > + add edx,ebp > + ror ebp,7 > + pshufd xmm11,xmm7,238 > + xor esi,ebx > + movdqa xmm12,xmm10 > + paddd xmm13,xmm10 > + mov edi,edx > + add ecx,DWORD[48+rsp] > + punpcklqdq xmm11,xmm8 > + xor ebp,eax > + rol edx,5 > + add ecx,esi > + psrldq xmm12,4 > + and edi,ebp > + xor ebp,eax > + pxor xmm11,xmm7 > + add ecx,edx > + ror edx,7 > + pxor xmm12,xmm9 > + xor edi,eax > + mov esi,ecx > + add ebx,DWORD[52+rsp] > + movups xmm1,XMMWORD[48+r15] > +DB 102,15,56,220,208 > + pxor xmm11,xmm12 > + xor edx,ebp > + rol ecx,5 > + movdqa XMMWORD[32+rsp],xmm13 > + add ebx,edi > + and esi,edx > + movdqa xmm3,xmm11 > + xor edx,ebp > + add ebx,ecx > + ror ecx,7 > + movdqa xmm12,xmm11 > + xor esi,ebp > + pslldq xmm3,12 > + paddd xmm11,xmm11 > + mov edi,ebx > + add eax,DWORD[56+rsp] > + psrld xmm12,31 > + xor ecx,edx > + rol ebx,5 > + add eax,esi > + movdqa xmm13,xmm3 > + and edi,ecx > + xor ecx,edx > + psrld xmm3,30 > + add eax,ebx > + ror ebx,7 > + cmp r8d,11 > + jb NEAR $L$aesenclast1 > + movups xmm0,XMMWORD[64+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+r15] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast1 > + movups xmm0,XMMWORD[96+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+r15] > +DB 102,15,56,220,208 > +$L$aesenclast1: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+r15] > + por xmm11,xmm12 > + xor edi,edx > + mov esi,eax > + add ebp,DWORD[60+rsp] > + pslld xmm13,2 > + pxor xmm11,xmm3 > + xor ebx,ecx > + movdqa xmm3,XMMWORD[16+r11] > + rol eax,5 > + add ebp,edi > + and esi,ebx > + pxor xmm11,xmm13 > + pshufd xmm13,xmm10,238 > + xor ebx,ecx > + add ebp,eax > + ror eax,7 > + pxor xmm4,xmm8 > + xor esi,ecx > + mov edi,ebp > + add edx,DWORD[rsp] > + punpcklqdq xmm13,xmm11 > + xor eax,ebx > + rol ebp,5 > + pxor xmm4,xmm5 > + add edx,esi > + movups xmm14,XMMWORD[16+r12] > + xorps xmm14,xmm15 > + movups XMMWORD[r13*1+r12],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+r15] > +DB 102,15,56,220,208 > + and edi,eax > + movdqa xmm12,xmm3 > + xor eax,ebx > + paddd xmm3,xmm11 > + add edx,ebp > + pxor xmm4,xmm13 > + ror ebp,7 > + xor edi,ebx > + mov esi,edx > + add ecx,DWORD[4+rsp] > + movdqa xmm13,xmm4 > + xor ebp,eax > + rol edx,5 > + movdqa XMMWORD[48+rsp],xmm3 > + add ecx,edi > + and esi,ebp > + xor ebp,eax > + pslld xmm4,2 > + add ecx,edx > + ror edx,7 > + psrld xmm13,30 > + xor esi,eax > + mov edi,ecx > + add ebx,DWORD[8+rsp] > + movups xmm0,XMMWORD[((-64))+r15] > +DB 102,15,56,220,209 > + por xmm4,xmm13 > + xor edx,ebp > + rol ecx,5 > + pshufd xmm3,xmm11,238 > + add ebx,esi > + and edi,edx > + xor edx,ebp > + add ebx,ecx > + add eax,DWORD[12+rsp] > + xor edi,ebp > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + add eax,ebx > + pxor xmm5,xmm9 > + add ebp,DWORD[16+rsp] > + movups xmm1,XMMWORD[((-48))+r15] > +DB 102,15,56,220,208 > + xor esi,ecx > + punpcklqdq xmm3,xmm4 > + mov edi,eax > + rol eax,5 > + pxor xmm5,xmm6 > + add ebp,esi > + xor edi,ecx > + movdqa xmm13,xmm12 > + ror ebx,7 > + paddd xmm12,xmm4 > + add ebp,eax > + pxor xmm5,xmm3 > + add edx,DWORD[20+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + movdqa xmm3,xmm5 > + add edx,edi > + xor esi,ebx > + movdqa XMMWORD[rsp],xmm12 > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[24+rsp] > + pslld xmm5,2 > + xor esi,eax > + mov edi,edx > + psrld xmm3,30 > + rol edx,5 > + add ecx,esi > + movups xmm0,XMMWORD[((-32))+r15] > +DB 102,15,56,220,209 > + xor edi,eax > + ror ebp,7 > + por xmm5,xmm3 > + add ecx,edx > + add ebx,DWORD[28+rsp] > + pshufd xmm12,xmm4,238 > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + pxor xmm6,xmm10 > + add eax,DWORD[32+rsp] > + xor esi,edx > + punpcklqdq xmm12,xmm5 > + mov edi,ebx > + rol ebx,5 > + pxor xmm6,xmm7 > + add eax,esi > + xor edi,edx > + movdqa xmm3,XMMWORD[32+r11] > + ror ecx,7 > + paddd xmm13,xmm5 > + add eax,ebx > + pxor xmm6,xmm12 > + add ebp,DWORD[36+rsp] > + movups xmm1,XMMWORD[((-16))+r15] > +DB 102,15,56,220,208 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + movdqa xmm12,xmm6 > + add ebp,edi > + xor esi,ecx > + movdqa XMMWORD[16+rsp],xmm13 > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[40+rsp] > + pslld xmm6,2 > + xor esi,ebx > + mov edi,ebp > + psrld xmm12,30 > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + por xmm6,xmm12 > + add edx,ebp > + add ecx,DWORD[44+rsp] > + pshufd xmm13,xmm5,238 > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + movups xmm0,XMMWORD[r15] > +DB 102,15,56,220,209 > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + pxor xmm7,xmm11 > + add ebx,DWORD[48+rsp] > + xor esi,ebp > + punpcklqdq xmm13,xmm6 > + mov edi,ecx > + rol ecx,5 > + pxor xmm7,xmm8 > + add ebx,esi > + xor edi,ebp > + movdqa xmm12,xmm3 > + ror edx,7 > + paddd xmm3,xmm6 > + add ebx,ecx > + pxor xmm7,xmm13 > + add eax,DWORD[52+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + movdqa xmm13,xmm7 > + add eax,edi > + xor esi,edx > + movdqa XMMWORD[32+rsp],xmm3 > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[56+rsp] > + movups xmm1,XMMWORD[16+r15] > +DB 102,15,56,220,208 > + pslld xmm7,2 > + xor esi,ecx > + mov edi,eax > + psrld xmm13,30 > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + por xmm7,xmm13 > + add ebp,eax > + add edx,DWORD[60+rsp] > + pshufd xmm3,xmm6,238 > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + pxor xmm8,xmm4 > + add ecx,DWORD[rsp] > + xor esi,eax > + punpcklqdq xmm3,xmm7 > + mov edi,edx > + rol edx,5 > + pxor xmm8,xmm9 > + add ecx,esi > + movups xmm0,XMMWORD[32+r15] > +DB 102,15,56,220,209 > + xor edi,eax > + movdqa xmm13,xmm12 > + ror ebp,7 > + paddd xmm12,xmm7 > + add ecx,edx > + pxor xmm8,xmm3 > + add ebx,DWORD[4+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + movdqa xmm3,xmm8 > + add ebx,edi > + xor esi,ebp > + movdqa XMMWORD[48+rsp],xmm12 > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[8+rsp] > + pslld xmm8,2 > + xor esi,edx > + mov edi,ebx > + psrld xmm3,30 > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + por xmm8,xmm3 > + add eax,ebx > + add ebp,DWORD[12+rsp] > + movups xmm1,XMMWORD[48+r15] > +DB 102,15,56,220,208 > + pshufd xmm12,xmm7,238 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + pxor xmm9,xmm5 > + add edx,DWORD[16+rsp] > + xor esi,ebx > + punpcklqdq xmm12,xmm8 > + mov edi,ebp > + rol ebp,5 > + pxor xmm9,xmm10 > + add edx,esi > + xor edi,ebx > + movdqa xmm3,xmm13 > + ror eax,7 > + paddd xmm13,xmm8 > + add edx,ebp > + pxor xmm9,xmm12 > + add ecx,DWORD[20+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + movdqa xmm12,xmm9 > + add ecx,edi > + cmp r8d,11 > + jb NEAR $L$aesenclast2 > + movups xmm0,XMMWORD[64+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+r15] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast2 > + movups xmm0,XMMWORD[96+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+r15] > +DB 102,15,56,220,208 > +$L$aesenclast2: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+r15] > + xor esi,eax > + movdqa XMMWORD[rsp],xmm13 > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[24+rsp] > + pslld xmm9,2 > + xor esi,ebp > + mov edi,ecx > + psrld xmm12,30 > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + por xmm9,xmm12 > + add ebx,ecx > + add eax,DWORD[28+rsp] > + pshufd xmm13,xmm8,238 > + ror ecx,7 > + mov esi,ebx > + xor edi,edx > + rol ebx,5 > + add eax,edi > + xor esi,ecx > + xor ecx,edx > + add eax,ebx > + pxor xmm10,xmm6 > + add ebp,DWORD[32+rsp] > + movups xmm14,XMMWORD[32+r12] > + xorps xmm14,xmm15 > + movups XMMWORD[16+r12*1+r13],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+r15] > +DB 102,15,56,220,208 > + and esi,ecx > + xor ecx,edx > + ror ebx,7 > + punpcklqdq xmm13,xmm9 > + mov edi,eax > + xor esi,ecx > + pxor xmm10,xmm11 > + rol eax,5 > + add ebp,esi > + movdqa xmm12,xmm3 > + xor edi,ebx > + paddd xmm3,xmm9 > + xor ebx,ecx > + pxor xmm10,xmm13 > + add ebp,eax > + add edx,DWORD[36+rsp] > + and edi,ebx > + xor ebx,ecx > + ror eax,7 > + movdqa xmm13,xmm10 > + mov esi,ebp > + xor edi,ebx > + movdqa XMMWORD[16+rsp],xmm3 > + rol ebp,5 > + add edx,edi > + movups xmm0,XMMWORD[((-64))+r15] > +DB 102,15,56,220,209 > + xor esi,eax > + pslld xmm10,2 > + xor eax,ebx > + add edx,ebp > + psrld xmm13,30 > + add ecx,DWORD[40+rsp] > + and esi,eax > + xor eax,ebx > + por xmm10,xmm13 > + ror ebp,7 > + mov edi,edx > + xor esi,eax > + rol edx,5 > + pshufd xmm3,xmm9,238 > + add ecx,esi > + xor edi,ebp > + xor ebp,eax > + add ecx,edx > + add ebx,DWORD[44+rsp] > + and edi,ebp > + xor ebp,eax > + ror edx,7 > + movups xmm1,XMMWORD[((-48))+r15] > +DB 102,15,56,220,208 > + mov esi,ecx > + xor edi,ebp > + rol ecx,5 > + add ebx,edi > + xor esi,edx > + xor edx,ebp > + add ebx,ecx > + pxor xmm11,xmm7 > + add eax,DWORD[48+rsp] > + and esi,edx > + xor edx,ebp > + ror ecx,7 > + punpcklqdq xmm3,xmm10 > + mov edi,ebx > + xor esi,edx > + pxor xmm11,xmm4 > + rol ebx,5 > + add eax,esi > + movdqa xmm13,XMMWORD[48+r11] > + xor edi,ecx > + paddd xmm12,xmm10 > + xor ecx,edx > + pxor xmm11,xmm3 > + add eax,ebx > + add ebp,DWORD[52+rsp] > + movups xmm0,XMMWORD[((-32))+r15] > +DB 102,15,56,220,209 > + and edi,ecx > + xor ecx,edx > + ror ebx,7 > + movdqa xmm3,xmm11 > + mov esi,eax > + xor edi,ecx > + movdqa XMMWORD[32+rsp],xmm12 > + rol eax,5 > + add ebp,edi > + xor esi,ebx > + pslld xmm11,2 > + xor ebx,ecx > + add ebp,eax > + psrld xmm3,30 > + add edx,DWORD[56+rsp] > + and esi,ebx > + xor ebx,ecx > + por xmm11,xmm3 > + ror eax,7 > + mov edi,ebp > + xor esi,ebx > + rol ebp,5 > + pshufd xmm12,xmm10,238 > + add edx,esi > + movups xmm1,XMMWORD[((-16))+r15] > +DB 102,15,56,220,208 > + xor edi,eax > + xor eax,ebx > + add edx,ebp > + add ecx,DWORD[60+rsp] > + and edi,eax > + xor eax,ebx > + ror ebp,7 > + mov esi,edx > + xor edi,eax > + rol edx,5 > + add ecx,edi > + xor esi,ebp > + xor ebp,eax > + add ecx,edx > + pxor xmm4,xmm8 > + add ebx,DWORD[rsp] > + and esi,ebp > + xor ebp,eax > + ror edx,7 > + movups xmm0,XMMWORD[r15] > +DB 102,15,56,220,209 > + punpcklqdq xmm12,xmm11 > + mov edi,ecx > + xor esi,ebp > + pxor xmm4,xmm5 > + rol ecx,5 > + add ebx,esi > + movdqa xmm3,xmm13 > + xor edi,edx > + paddd xmm13,xmm11 > + xor edx,ebp > + pxor xmm4,xmm12 > + add ebx,ecx > + add eax,DWORD[4+rsp] > + and edi,edx > + xor edx,ebp > + ror ecx,7 > + movdqa xmm12,xmm4 > + mov esi,ebx > + xor edi,edx > + movdqa XMMWORD[48+rsp],xmm13 > + rol ebx,5 > + add eax,edi > + xor esi,ecx > + pslld xmm4,2 > + xor ecx,edx > + add eax,ebx > + psrld xmm12,30 > + add ebp,DWORD[8+rsp] > + movups xmm1,XMMWORD[16+r15] > +DB 102,15,56,220,208 > + and esi,ecx > + xor ecx,edx > + por xmm4,xmm12 > + ror ebx,7 > + mov edi,eax > + xor esi,ecx > + rol eax,5 > + pshufd xmm13,xmm11,238 > + add ebp,esi > + xor edi,ebx > + xor ebx,ecx > + add ebp,eax > + add edx,DWORD[12+rsp] > + and edi,ebx > + xor ebx,ecx > + ror eax,7 > + mov esi,ebp > + xor edi,ebx > + rol ebp,5 > + add edx,edi > + movups xmm0,XMMWORD[32+r15] > +DB 102,15,56,220,209 > + xor esi,eax > + xor eax,ebx > + add edx,ebp > + pxor xmm5,xmm9 > + add ecx,DWORD[16+rsp] > + and esi,eax > + xor eax,ebx > + ror ebp,7 > + punpcklqdq xmm13,xmm4 > + mov edi,edx > + xor esi,eax > + pxor xmm5,xmm6 > + rol edx,5 > + add ecx,esi > + movdqa xmm12,xmm3 > + xor edi,ebp > + paddd xmm3,xmm4 > + xor ebp,eax > + pxor xmm5,xmm13 > + add ecx,edx > + add ebx,DWORD[20+rsp] > + and edi,ebp > + xor ebp,eax > + ror edx,7 > + movups xmm1,XMMWORD[48+r15] > +DB 102,15,56,220,208 > + movdqa xmm13,xmm5 > + mov esi,ecx > + xor edi,ebp > + movdqa XMMWORD[rsp],xmm3 > + rol ecx,5 > + add ebx,edi > + xor esi,edx > + pslld xmm5,2 > + xor edx,ebp > + add ebx,ecx > + psrld xmm13,30 > + add eax,DWORD[24+rsp] > + and esi,edx > + xor edx,ebp > + por xmm5,xmm13 > + ror ecx,7 > + mov edi,ebx > + xor esi,edx > + rol ebx,5 > + pshufd xmm3,xmm4,238 > + add eax,esi > + xor edi,ecx > + xor ecx,edx > + add eax,ebx > + add ebp,DWORD[28+rsp] > + cmp r8d,11 > + jb NEAR $L$aesenclast3 > + movups xmm0,XMMWORD[64+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+r15] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast3 > + movups xmm0,XMMWORD[96+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+r15] > +DB 102,15,56,220,208 > +$L$aesenclast3: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+r15] > + and edi,ecx > + xor ecx,edx > + ror ebx,7 > + mov esi,eax > + xor edi,ecx > + rol eax,5 > + add ebp,edi > + xor esi,ebx > + xor ebx,ecx > + add ebp,eax > + pxor xmm6,xmm10 > + add edx,DWORD[32+rsp] > + and esi,ebx > + xor ebx,ecx > + ror eax,7 > + punpcklqdq xmm3,xmm5 > + mov edi,ebp > + xor esi,ebx > + pxor xmm6,xmm7 > + rol ebp,5 > + add edx,esi > + movups xmm14,XMMWORD[48+r12] > + xorps xmm14,xmm15 > + movups XMMWORD[32+r12*1+r13],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+r15] > +DB 102,15,56,220,208 > + movdqa xmm13,xmm12 > + xor edi,eax > + paddd xmm12,xmm5 > + xor eax,ebx > + pxor xmm6,xmm3 > + add edx,ebp > + add ecx,DWORD[36+rsp] > + and edi,eax > + xor eax,ebx > + ror ebp,7 > + movdqa xmm3,xmm6 > + mov esi,edx > + xor edi,eax > + movdqa XMMWORD[16+rsp],xmm12 > + rol edx,5 > + add ecx,edi > + xor esi,ebp > + pslld xmm6,2 > + xor ebp,eax > + add ecx,edx > + psrld xmm3,30 > + add ebx,DWORD[40+rsp] > + and esi,ebp > + xor ebp,eax > + por xmm6,xmm3 > + ror edx,7 > + movups xmm0,XMMWORD[((-64))+r15] > +DB 102,15,56,220,209 > + mov edi,ecx > + xor esi,ebp > + rol ecx,5 > + pshufd xmm12,xmm5,238 > + add ebx,esi > + xor edi,edx > + xor edx,ebp > + add ebx,ecx > + add eax,DWORD[44+rsp] > + and edi,edx > + xor edx,ebp > + ror ecx,7 > + mov esi,ebx > + xor edi,edx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + add eax,ebx > + pxor xmm7,xmm11 > + add ebp,DWORD[48+rsp] > + movups xmm1,XMMWORD[((-48))+r15] > +DB 102,15,56,220,208 > + xor esi,ecx > + punpcklqdq xmm12,xmm6 > + mov edi,eax > + rol eax,5 > + pxor xmm7,xmm8 > + add ebp,esi > + xor edi,ecx > + movdqa xmm3,xmm13 > + ror ebx,7 > + paddd xmm13,xmm6 > + add ebp,eax > + pxor xmm7,xmm12 > + add edx,DWORD[52+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + movdqa xmm12,xmm7 > + add edx,edi > + xor esi,ebx > + movdqa XMMWORD[32+rsp],xmm13 > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[56+rsp] > + pslld xmm7,2 > + xor esi,eax > + mov edi,edx > + psrld xmm12,30 > + rol edx,5 > + add ecx,esi > + movups xmm0,XMMWORD[((-32))+r15] > +DB 102,15,56,220,209 > + xor edi,eax > + ror ebp,7 > + por xmm7,xmm12 > + add ecx,edx > + add ebx,DWORD[60+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + paddd xmm3,xmm7 > + add eax,esi > + xor edi,edx > + movdqa XMMWORD[48+rsp],xmm3 > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[4+rsp] > + movups xmm1,XMMWORD[((-16))+r15] > +DB 102,15,56,220,208 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[8+rsp] > + xor esi,ebx > + mov edi,ebp > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[12+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + movups xmm0,XMMWORD[r15] > +DB 102,15,56,220,209 > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + cmp r10,r14 > + je NEAR $L$done_ssse3 > + movdqa xmm3,XMMWORD[64+r11] > + movdqa xmm13,XMMWORD[r11] > + movdqu xmm4,XMMWORD[r10] > + movdqu xmm5,XMMWORD[16+r10] > + movdqu xmm6,XMMWORD[32+r10] > + movdqu xmm7,XMMWORD[48+r10] > +DB 102,15,56,0,227 > + add r10,64 > + add ebx,DWORD[16+rsp] > + xor esi,ebp > + mov edi,ecx > +DB 102,15,56,0,235 > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + paddd xmm4,xmm13 > + add ebx,ecx > + add eax,DWORD[20+rsp] > + xor edi,edx > + mov esi,ebx > + movdqa XMMWORD[rsp],xmm4 > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + psubd xmm4,xmm13 > + add eax,ebx > + add ebp,DWORD[24+rsp] > + movups xmm1,XMMWORD[16+r15] > +DB 102,15,56,220,208 > + xor esi,ecx > + mov edi,eax > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[28+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[32+rsp] > + xor esi,eax > + mov edi,edx > +DB 102,15,56,0,243 > + rol edx,5 > + add ecx,esi > + movups xmm0,XMMWORD[32+r15] > +DB 102,15,56,220,209 > + xor edi,eax > + ror ebp,7 > + paddd xmm5,xmm13 > + add ecx,edx > + add ebx,DWORD[36+rsp] > + xor edi,ebp > + mov esi,ecx > + movdqa XMMWORD[16+rsp],xmm5 > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + psubd xmm5,xmm13 > + add ebx,ecx > + add eax,DWORD[40+rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[44+rsp] > + movups xmm1,XMMWORD[48+r15] > +DB 102,15,56,220,208 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[48+rsp] > + xor esi,ebx > + mov edi,ebp > +DB 102,15,56,0,251 > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + paddd xmm6,xmm13 > + add edx,ebp > + add ecx,DWORD[52+rsp] > + xor edi,eax > + mov esi,edx > + movdqa XMMWORD[32+rsp],xmm6 > + rol edx,5 > + add ecx,edi > + cmp r8d,11 > + jb NEAR $L$aesenclast4 > + movups xmm0,XMMWORD[64+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+r15] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast4 > + movups xmm0,XMMWORD[96+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+r15] > +DB 102,15,56,220,208 > +$L$aesenclast4: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+r15] > + xor esi,eax > + ror ebp,7 > + psubd xmm6,xmm13 > + add ecx,edx > + add ebx,DWORD[56+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[60+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + ror ecx,7 > + add eax,ebx > + movups XMMWORD[48+r12*1+r13],xmm2 > + lea r12,[64+r12] > + > + add eax,DWORD[r9] > + add esi,DWORD[4+r9] > + add ecx,DWORD[8+r9] > + add edx,DWORD[12+r9] > + mov DWORD[r9],eax > + add ebp,DWORD[16+r9] > + mov DWORD[4+r9],esi > + mov ebx,esi > + mov DWORD[8+r9],ecx > + mov edi,ecx > + mov DWORD[12+r9],edx > + xor edi,edx > + mov DWORD[16+r9],ebp > + and esi,edi > + jmp NEAR $L$oop_ssse3 > + > +$L$done_ssse3: > + add ebx,DWORD[16+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[20+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[24+rsp] > + movups xmm1,XMMWORD[16+r15] > +DB 102,15,56,220,208 > + xor esi,ecx > + mov edi,eax > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[28+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[32+rsp] > + xor esi,eax > + mov edi,edx > + rol edx,5 > + add ecx,esi > + movups xmm0,XMMWORD[32+r15] > +DB 102,15,56,220,209 > + xor edi,eax > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[36+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[40+rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[44+rsp] > + movups xmm1,XMMWORD[48+r15] > +DB 102,15,56,220,208 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[48+rsp] > + xor esi,ebx > + mov edi,ebp > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[52+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + cmp r8d,11 > + jb NEAR $L$aesenclast5 > + movups xmm0,XMMWORD[64+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+r15] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast5 > + movups xmm0,XMMWORD[96+r15] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+r15] > +DB 102,15,56,220,208 > +$L$aesenclast5: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+r15] > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[56+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[60+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + ror ecx,7 > + add eax,ebx > + movups XMMWORD[48+r12*1+r13],xmm2 > + mov r8,QWORD[88+rsp] > + > + add eax,DWORD[r9] > + add esi,DWORD[4+r9] > + add ecx,DWORD[8+r9] > + mov DWORD[r9],eax > + add edx,DWORD[12+r9] > + mov DWORD[4+r9],esi > + add ebp,DWORD[16+r9] > + mov DWORD[8+r9],ecx > + mov DWORD[12+r9],edx > + mov DWORD[16+r9],ebp > + movups XMMWORD[r8],xmm2 > + movaps xmm6,XMMWORD[((96+0))+rsp] > + movaps xmm7,XMMWORD[((96+16))+rsp] > + movaps xmm8,XMMWORD[((96+32))+rsp] > + movaps xmm9,XMMWORD[((96+48))+rsp] > + movaps xmm10,XMMWORD[((96+64))+rsp] > + movaps xmm11,XMMWORD[((96+80))+rsp] > + movaps xmm12,XMMWORD[((96+96))+rsp] > + movaps xmm13,XMMWORD[((96+112))+rsp] > + movaps xmm14,XMMWORD[((96+128))+rsp] > + movaps xmm15,XMMWORD[((96+144))+rsp] > + lea rsi,[264+rsp] > + > + mov r15,QWORD[rsi] > + > + mov r14,QWORD[8+rsi] > + > + mov r13,QWORD[16+rsi] > + > + mov r12,QWORD[24+rsi] > + > + mov rbp,QWORD[32+rsi] > + > + mov rbx,QWORD[40+rsi] > + > + lea rsp,[48+rsi] > + > +$L$epilogue_ssse3: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_cbc_sha1_enc_ssse3: > +ALIGN 64 > +K_XX_XX: > + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > + > +DB 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115 > +DB 116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52 > +DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 > +DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 > +DB 114,103,62,0 > +ALIGN 64 > + > +ALIGN 32 > +aesni_cbc_sha1_enc_shaext: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + mov r10,QWORD[56+rsp] > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[(-8-160)+rax],xmm6 > + movaps XMMWORD[(-8-144)+rax],xmm7 > + movaps XMMWORD[(-8-128)+rax],xmm8 > + movaps XMMWORD[(-8-112)+rax],xmm9 > + movaps XMMWORD[(-8-96)+rax],xmm10 > + movaps XMMWORD[(-8-80)+rax],xmm11 > + movaps XMMWORD[(-8-64)+rax],xmm12 > + movaps XMMWORD[(-8-48)+rax],xmm13 > + movaps XMMWORD[(-8-32)+rax],xmm14 > + movaps XMMWORD[(-8-16)+rax],xmm15 > +$L$prologue_shaext: > + movdqu xmm8,XMMWORD[r9] > + movd xmm9,DWORD[16+r9] > + movdqa xmm7,XMMWORD[((K_XX_XX+80))] > + > + mov r11d,DWORD[240+rcx] > + sub rsi,rdi > + movups xmm15,XMMWORD[rcx] > + movups xmm2,XMMWORD[r8] > + movups xmm0,XMMWORD[16+rcx] > + lea rcx,[112+rcx] > + > + pshufd xmm8,xmm8,27 > + pshufd xmm9,xmm9,27 > + jmp NEAR $L$oop_shaext > + > +ALIGN 16 > +$L$oop_shaext: > + movups xmm14,XMMWORD[rdi] > + xorps xmm14,xmm15 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+rcx] > +DB 102,15,56,220,208 > + movdqu xmm3,XMMWORD[r10] > + movdqa xmm12,xmm9 > +DB 102,15,56,0,223 > + movdqu xmm4,XMMWORD[16+r10] > + movdqa xmm11,xmm8 > + movups xmm0,XMMWORD[((-64))+rcx] > +DB 102,15,56,220,209 > +DB 102,15,56,0,231 > + > + paddd xmm9,xmm3 > + movdqu xmm5,XMMWORD[32+r10] > + lea r10,[64+r10] > + pxor xmm3,xmm12 > + movups xmm1,XMMWORD[((-48))+rcx] > +DB 102,15,56,220,208 > + pxor xmm3,xmm12 > + movdqa xmm10,xmm8 > +DB 102,15,56,0,239 > +DB 69,15,58,204,193,0 > +DB 68,15,56,200,212 > + movups xmm0,XMMWORD[((-32))+rcx] > +DB 102,15,56,220,209 > +DB 15,56,201,220 > + movdqu xmm6,XMMWORD[((-16))+r10] > + movdqa xmm9,xmm8 > +DB 102,15,56,0,247 > + movups xmm1,XMMWORD[((-16))+rcx] > +DB 102,15,56,220,208 > +DB 69,15,58,204,194,0 > +DB 68,15,56,200,205 > + pxor xmm3,xmm5 > +DB 15,56,201,229 > + movups xmm0,XMMWORD[rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,0 > +DB 68,15,56,200,214 > + movups xmm1,XMMWORD[16+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,222 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + movups xmm0,XMMWORD[32+rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,0 > +DB 68,15,56,200,203 > + movups xmm1,XMMWORD[48+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,227 > + pxor xmm5,xmm3 > +DB 15,56,201,243 > + cmp r11d,11 > + jb NEAR $L$aesenclast6 > + movups xmm0,XMMWORD[64+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+rcx] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast6 > + movups xmm0,XMMWORD[96+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+rcx] > +DB 102,15,56,220,208 > +$L$aesenclast6: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+rcx] > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,0 > +DB 68,15,56,200,212 > + movups xmm14,XMMWORD[16+rdi] > + xorps xmm14,xmm15 > + movups XMMWORD[rdi*1+rsi],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,236 > + pxor xmm6,xmm4 > +DB 15,56,201,220 > + movups xmm0,XMMWORD[((-64))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,1 > +DB 68,15,56,200,205 > + movups xmm1,XMMWORD[((-48))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,245 > + pxor xmm3,xmm5 > +DB 15,56,201,229 > + movups xmm0,XMMWORD[((-32))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,1 > +DB 68,15,56,200,214 > + movups xmm1,XMMWORD[((-16))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,222 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + movups xmm0,XMMWORD[rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,1 > +DB 68,15,56,200,203 > + movups xmm1,XMMWORD[16+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,227 > + pxor xmm5,xmm3 > +DB 15,56,201,243 > + movups xmm0,XMMWORD[32+rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,1 > +DB 68,15,56,200,212 > + movups xmm1,XMMWORD[48+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,236 > + pxor xmm6,xmm4 > +DB 15,56,201,220 > + cmp r11d,11 > + jb NEAR $L$aesenclast7 > + movups xmm0,XMMWORD[64+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+rcx] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast7 > + movups xmm0,XMMWORD[96+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+rcx] > +DB 102,15,56,220,208 > +$L$aesenclast7: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+rcx] > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,1 > +DB 68,15,56,200,205 > + movups xmm14,XMMWORD[32+rdi] > + xorps xmm14,xmm15 > + movups XMMWORD[16+rdi*1+rsi],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,245 > + pxor xmm3,xmm5 > +DB 15,56,201,229 > + movups xmm0,XMMWORD[((-64))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,2 > +DB 68,15,56,200,214 > + movups xmm1,XMMWORD[((-48))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,222 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + movups xmm0,XMMWORD[((-32))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,2 > +DB 68,15,56,200,203 > + movups xmm1,XMMWORD[((-16))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,227 > + pxor xmm5,xmm3 > +DB 15,56,201,243 > + movups xmm0,XMMWORD[rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,2 > +DB 68,15,56,200,212 > + movups xmm1,XMMWORD[16+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,236 > + pxor xmm6,xmm4 > +DB 15,56,201,220 > + movups xmm0,XMMWORD[32+rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,2 > +DB 68,15,56,200,205 > + movups xmm1,XMMWORD[48+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,245 > + pxor xmm3,xmm5 > +DB 15,56,201,229 > + cmp r11d,11 > + jb NEAR $L$aesenclast8 > + movups xmm0,XMMWORD[64+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+rcx] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast8 > + movups xmm0,XMMWORD[96+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+rcx] > +DB 102,15,56,220,208 > +$L$aesenclast8: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+rcx] > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,2 > +DB 68,15,56,200,214 > + movups xmm14,XMMWORD[48+rdi] > + xorps xmm14,xmm15 > + movups XMMWORD[32+rdi*1+rsi],xmm2 > + xorps xmm2,xmm14 > + movups xmm1,XMMWORD[((-80))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,222 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + movups xmm0,XMMWORD[((-64))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,3 > +DB 68,15,56,200,203 > + movups xmm1,XMMWORD[((-48))+rcx] > +DB 102,15,56,220,208 > +DB 15,56,202,227 > + pxor xmm5,xmm3 > +DB 15,56,201,243 > + movups xmm0,XMMWORD[((-32))+rcx] > +DB 102,15,56,220,209 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,3 > +DB 68,15,56,200,212 > +DB 15,56,202,236 > + pxor xmm6,xmm4 > + movups xmm1,XMMWORD[((-16))+rcx] > +DB 102,15,56,220,208 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,3 > +DB 68,15,56,200,205 > +DB 15,56,202,245 > + movups xmm0,XMMWORD[rcx] > +DB 102,15,56,220,209 > + movdqa xmm5,xmm12 > + movdqa xmm10,xmm8 > +DB 69,15,58,204,193,3 > +DB 68,15,56,200,214 > + movups xmm1,XMMWORD[16+rcx] > +DB 102,15,56,220,208 > + movdqa xmm9,xmm8 > +DB 69,15,58,204,194,3 > +DB 68,15,56,200,205 > + movups xmm0,XMMWORD[32+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[48+rcx] > +DB 102,15,56,220,208 > + cmp r11d,11 > + jb NEAR $L$aesenclast9 > + movups xmm0,XMMWORD[64+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[80+rcx] > +DB 102,15,56,220,208 > + je NEAR $L$aesenclast9 > + movups xmm0,XMMWORD[96+rcx] > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[112+rcx] > +DB 102,15,56,220,208 > +$L$aesenclast9: > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[((16-112))+rcx] > + dec rdx > + > + paddd xmm8,xmm11 > + movups XMMWORD[48+rdi*1+rsi],xmm2 > + lea rdi,[64+rdi] > + jnz NEAR $L$oop_shaext > + > + pshufd xmm8,xmm8,27 > + pshufd xmm9,xmm9,27 > + movups XMMWORD[r8],xmm2 > + movdqu XMMWORD[r9],xmm8 > + movd DWORD[16+r9],xmm9 > + movaps xmm6,XMMWORD[((-8-160))+rax] > + movaps xmm7,XMMWORD[((-8-144))+rax] > + movaps xmm8,XMMWORD[((-8-128))+rax] > + movaps xmm9,XMMWORD[((-8-112))+rax] > + movaps xmm10,XMMWORD[((-8-96))+rax] > + movaps xmm11,XMMWORD[((-8-80))+rax] > + movaps xmm12,XMMWORD[((-8-64))+rax] > + movaps xmm13,XMMWORD[((-8-48))+rax] > + movaps xmm14,XMMWORD[((-8-32))+rax] > + movaps xmm15,XMMWORD[((-8-16))+rax] > + mov rsp,rax > +$L$epilogue_shaext: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_cbc_sha1_enc_shaext: > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +ssse3_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + lea r10,[aesni_cbc_sha1_enc_shaext] > + cmp rbx,r10 > + jb NEAR $L$seh_no_shaext > + > + lea rsi,[rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + lea rax,[168+rax] > + jmp NEAR $L$common_seh_tail > +$L$seh_no_shaext: > + lea rsi,[96+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + lea rax,[264+rax] > + > + mov r15,QWORD[rax] > + mov r14,QWORD[8+rax] > + mov r13,QWORD[16+rax] > + mov r12,QWORD[24+rax] > + mov rbp,QWORD[32+rax] > + mov rbx,QWORD[40+rax] > + lea rax,[48+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + mov QWORD[240+r8],r15 > + > +$L$common_seh_tail: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase > + DD $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase > + DD $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase > + DD $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase > + DD $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase > + DD $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3: > +DB 9,0,0,0 > + DD ssse3_handler wrt ..imagebase > + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 > wrt ..imagebase > +$L$SEH_info_aesni_cbc_sha1_enc_shaext: > +DB 9,0,0,0 > + DD ssse3_handler wrt ..imagebase > + DD $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256- > x86_64.nasm > new file mode 100644 > index 0000000000..f5c250b904 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256- > x86_64.nasm > @@ -0,0 +1,78 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl > +; > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > +global aesni_cbc_sha256_enc > + > +ALIGN 16 > +aesni_cbc_sha256_enc: > + > + xor eax,eax > + cmp rcx,0 > + je NEAR $L$probe > + ud2 > +$L$probe: > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 64 > + > +K256: > + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0,0,0,0,0,0,0,0,-1,-1,-1,-1 > + DD 0,0,0,0,0,0,0,0 > +DB 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54 > +DB 32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95 > +DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98 > +DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108 > +DB 46,111,114,103,62,0 > +ALIGN 64 > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nas= m > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm > new file mode 100644 > index 0000000000..57ee23ea8c > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm > @@ -0,0 +1,5103 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl > +; > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > +EXTERN OPENSSL_ia32cap_P > +global aesni_encrypt > + > +ALIGN 16 > +aesni_encrypt: > + > + movups xmm2,XMMWORD[rcx] > + mov eax,DWORD[240+r8] > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[16+r8] > + lea r8,[32+r8] > + xorps xmm2,xmm0 > +$L$oop_enc1_1: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[r8] > + lea r8,[16+r8] > + jnz NEAR $L$oop_enc1_1 > +DB 102,15,56,221,209 > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + movups XMMWORD[rdx],xmm2 > + pxor xmm2,xmm2 > + DB 0F3h,0C3h ;repret > + > + > + > +global aesni_decrypt > + > +ALIGN 16 > +aesni_decrypt: > + > + movups xmm2,XMMWORD[rcx] > + mov eax,DWORD[240+r8] > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[16+r8] > + lea r8,[32+r8] > + xorps xmm2,xmm0 > +$L$oop_dec1_2: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[r8] > + lea r8,[16+r8] > + jnz NEAR $L$oop_dec1_2 > +DB 102,15,56,223,209 > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + movups XMMWORD[rdx],xmm2 > + pxor xmm2,xmm2 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_encrypt2: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > + add rax,16 > + > +$L$enc_loop2: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$enc_loop2 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_decrypt2: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > + add rax,16 > + > +$L$dec_loop2: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$dec_loop2 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,223,208 > +DB 102,15,56,223,216 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_encrypt3: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + xorps xmm4,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > + add rax,16 > + > +$L$enc_loop3: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$enc_loop3 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > +DB 102,15,56,221,224 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_decrypt3: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + xorps xmm4,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > + add rax,16 > + > +$L$dec_loop3: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$dec_loop3 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,223,208 > +DB 102,15,56,223,216 > +DB 102,15,56,223,224 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_encrypt4: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + xorps xmm4,xmm0 > + xorps xmm5,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 0x0f,0x1f,0x00 > + add rax,16 > + > +$L$enc_loop4: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$enc_loop4 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > +DB 102,15,56,221,224 > +DB 102,15,56,221,232 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_decrypt4: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + xorps xmm4,xmm0 > + xorps xmm5,xmm0 > + movups xmm0,XMMWORD[32+rcx] > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 0x0f,0x1f,0x00 > + add rax,16 > + > +$L$dec_loop4: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$dec_loop4 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,223,208 > +DB 102,15,56,223,216 > +DB 102,15,56,223,224 > +DB 102,15,56,223,232 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_encrypt6: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + pxor xmm3,xmm0 > + pxor xmm4,xmm0 > +DB 102,15,56,220,209 > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 102,15,56,220,217 > + pxor xmm5,xmm0 > + pxor xmm6,xmm0 > +DB 102,15,56,220,225 > + pxor xmm7,xmm0 > + movups xmm0,XMMWORD[rax*1+rcx] > + add rax,16 > + jmp NEAR $L$enc_loop6_enter > +ALIGN 16 > +$L$enc_loop6: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +$L$enc_loop6_enter: > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$enc_loop6 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > +DB 102,15,56,221,224 > +DB 102,15,56,221,232 > +DB 102,15,56,221,240 > +DB 102,15,56,221,248 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_decrypt6: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + pxor xmm3,xmm0 > + pxor xmm4,xmm0 > +DB 102,15,56,222,209 > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 102,15,56,222,217 > + pxor xmm5,xmm0 > + pxor xmm6,xmm0 > +DB 102,15,56,222,225 > + pxor xmm7,xmm0 > + movups xmm0,XMMWORD[rax*1+rcx] > + add rax,16 > + jmp NEAR $L$dec_loop6_enter > +ALIGN 16 > +$L$dec_loop6: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +$L$dec_loop6_enter: > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$dec_loop6 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,15,56,223,208 > +DB 102,15,56,223,216 > +DB 102,15,56,223,224 > +DB 102,15,56,223,232 > +DB 102,15,56,223,240 > +DB 102,15,56,223,248 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_encrypt8: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + pxor xmm4,xmm0 > + pxor xmm5,xmm0 > + pxor xmm6,xmm0 > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 102,15,56,220,209 > + pxor xmm7,xmm0 > + pxor xmm8,xmm0 > +DB 102,15,56,220,217 > + pxor xmm9,xmm0 > + movups xmm0,XMMWORD[rax*1+rcx] > + add rax,16 > + jmp NEAR $L$enc_loop8_inner > +ALIGN 16 > +$L$enc_loop8: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +$L$enc_loop8_inner: > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > +$L$enc_loop8_enter: > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$enc_loop8 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > +DB 102,15,56,221,224 > +DB 102,15,56,221,232 > +DB 102,15,56,221,240 > +DB 102,15,56,221,248 > +DB 102,68,15,56,221,192 > +DB 102,68,15,56,221,200 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 16 > +_aesni_decrypt8: > + > + movups xmm0,XMMWORD[rcx] > + shl eax,4 > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm2,xmm0 > + xorps xmm3,xmm0 > + pxor xmm4,xmm0 > + pxor xmm5,xmm0 > + pxor xmm6,xmm0 > + lea rcx,[32+rax*1+rcx] > + neg rax > +DB 102,15,56,222,209 > + pxor xmm7,xmm0 > + pxor xmm8,xmm0 > +DB 102,15,56,222,217 > + pxor xmm9,xmm0 > + movups xmm0,XMMWORD[rax*1+rcx] > + add rax,16 > + jmp NEAR $L$dec_loop8_inner > +ALIGN 16 > +$L$dec_loop8: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +$L$dec_loop8_inner: > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > +$L$dec_loop8_enter: > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$dec_loop8 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > +DB 102,15,56,223,208 > +DB 102,15,56,223,216 > +DB 102,15,56,223,224 > +DB 102,15,56,223,232 > +DB 102,15,56,223,240 > +DB 102,15,56,223,248 > +DB 102,68,15,56,223,192 > +DB 102,68,15,56,223,200 > + DB 0F3h,0C3h ;repret > + > + > +global aesni_ecb_encrypt > + > +ALIGN 16 > +aesni_ecb_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ecb_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + > + > + > + lea rsp,[((-88))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > +$L$ecb_enc_body: > + and rdx,-16 > + jz NEAR $L$ecb_ret > + > + mov eax,DWORD[240+rcx] > + movups xmm0,XMMWORD[rcx] > + mov r11,rcx > + mov r10d,eax > + test r8d,r8d > + jz NEAR $L$ecb_decrypt > + > + cmp rdx,0x80 > + jb NEAR $L$ecb_enc_tail > + > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + movdqu xmm5,XMMWORD[48+rdi] > + movdqu xmm6,XMMWORD[64+rdi] > + movdqu xmm7,XMMWORD[80+rdi] > + movdqu xmm8,XMMWORD[96+rdi] > + movdqu xmm9,XMMWORD[112+rdi] > + lea rdi,[128+rdi] > + sub rdx,0x80 > + jmp NEAR $L$ecb_enc_loop8_enter > +ALIGN 16 > +$L$ecb_enc_loop8: > + movups XMMWORD[rsi],xmm2 > + mov rcx,r11 > + movdqu xmm2,XMMWORD[rdi] > + mov eax,r10d > + movups XMMWORD[16+rsi],xmm3 > + movdqu xmm3,XMMWORD[16+rdi] > + movups XMMWORD[32+rsi],xmm4 > + movdqu xmm4,XMMWORD[32+rdi] > + movups XMMWORD[48+rsi],xmm5 > + movdqu xmm5,XMMWORD[48+rdi] > + movups XMMWORD[64+rsi],xmm6 > + movdqu xmm6,XMMWORD[64+rdi] > + movups XMMWORD[80+rsi],xmm7 > + movdqu xmm7,XMMWORD[80+rdi] > + movups XMMWORD[96+rsi],xmm8 > + movdqu xmm8,XMMWORD[96+rdi] > + movups XMMWORD[112+rsi],xmm9 > + lea rsi,[128+rsi] > + movdqu xmm9,XMMWORD[112+rdi] > + lea rdi,[128+rdi] > +$L$ecb_enc_loop8_enter: > + > + call _aesni_encrypt8 > + > + sub rdx,0x80 > + jnc NEAR $L$ecb_enc_loop8 > + > + movups XMMWORD[rsi],xmm2 > + mov rcx,r11 > + movups XMMWORD[16+rsi],xmm3 > + mov eax,r10d > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + movups XMMWORD[80+rsi],xmm7 > + movups XMMWORD[96+rsi],xmm8 > + movups XMMWORD[112+rsi],xmm9 > + lea rsi,[128+rsi] > + add rdx,0x80 > + jz NEAR $L$ecb_ret > + > +$L$ecb_enc_tail: > + movups xmm2,XMMWORD[rdi] > + cmp rdx,0x20 > + jb NEAR $L$ecb_enc_one > + movups xmm3,XMMWORD[16+rdi] > + je NEAR $L$ecb_enc_two > + movups xmm4,XMMWORD[32+rdi] > + cmp rdx,0x40 > + jb NEAR $L$ecb_enc_three > + movups xmm5,XMMWORD[48+rdi] > + je NEAR $L$ecb_enc_four > + movups xmm6,XMMWORD[64+rdi] > + cmp rdx,0x60 > + jb NEAR $L$ecb_enc_five > + movups xmm7,XMMWORD[80+rdi] > + je NEAR $L$ecb_enc_six > + movdqu xmm8,XMMWORD[96+rdi] > + xorps xmm9,xmm9 > + call _aesni_encrypt8 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + movups XMMWORD[80+rsi],xmm7 > + movups XMMWORD[96+rsi],xmm8 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_one: > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_enc1_3: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_3 > +DB 102,15,56,221,209 > + movups XMMWORD[rsi],xmm2 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_two: > + call _aesni_encrypt2 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_three: > + call _aesni_encrypt3 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_four: > + call _aesni_encrypt4 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_five: > + xorps xmm7,xmm7 > + call _aesni_encrypt6 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_enc_six: > + call _aesni_encrypt6 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + movups XMMWORD[80+rsi],xmm7 > + jmp NEAR $L$ecb_ret > + > +ALIGN 16 > +$L$ecb_decrypt: > + cmp rdx,0x80 > + jb NEAR $L$ecb_dec_tail > + > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + movdqu xmm5,XMMWORD[48+rdi] > + movdqu xmm6,XMMWORD[64+rdi] > + movdqu xmm7,XMMWORD[80+rdi] > + movdqu xmm8,XMMWORD[96+rdi] > + movdqu xmm9,XMMWORD[112+rdi] > + lea rdi,[128+rdi] > + sub rdx,0x80 > + jmp NEAR $L$ecb_dec_loop8_enter > +ALIGN 16 > +$L$ecb_dec_loop8: > + movups XMMWORD[rsi],xmm2 > + mov rcx,r11 > + movdqu xmm2,XMMWORD[rdi] > + mov eax,r10d > + movups XMMWORD[16+rsi],xmm3 > + movdqu xmm3,XMMWORD[16+rdi] > + movups XMMWORD[32+rsi],xmm4 > + movdqu xmm4,XMMWORD[32+rdi] > + movups XMMWORD[48+rsi],xmm5 > + movdqu xmm5,XMMWORD[48+rdi] > + movups XMMWORD[64+rsi],xmm6 > + movdqu xmm6,XMMWORD[64+rdi] > + movups XMMWORD[80+rsi],xmm7 > + movdqu xmm7,XMMWORD[80+rdi] > + movups XMMWORD[96+rsi],xmm8 > + movdqu xmm8,XMMWORD[96+rdi] > + movups XMMWORD[112+rsi],xmm9 > + lea rsi,[128+rsi] > + movdqu xmm9,XMMWORD[112+rdi] > + lea rdi,[128+rdi] > +$L$ecb_dec_loop8_enter: > + > + call _aesni_decrypt8 > + > + movups xmm0,XMMWORD[r11] > + sub rdx,0x80 > + jnc NEAR $L$ecb_dec_loop8 > + > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + mov rcx,r11 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + mov eax,r10d > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + movups XMMWORD[80+rsi],xmm7 > + pxor xmm7,xmm7 > + movups XMMWORD[96+rsi],xmm8 > + pxor xmm8,xmm8 > + movups XMMWORD[112+rsi],xmm9 > + pxor xmm9,xmm9 > + lea rsi,[128+rsi] > + add rdx,0x80 > + jz NEAR $L$ecb_ret > + > +$L$ecb_dec_tail: > + movups xmm2,XMMWORD[rdi] > + cmp rdx,0x20 > + jb NEAR $L$ecb_dec_one > + movups xmm3,XMMWORD[16+rdi] > + je NEAR $L$ecb_dec_two > + movups xmm4,XMMWORD[32+rdi] > + cmp rdx,0x40 > + jb NEAR $L$ecb_dec_three > + movups xmm5,XMMWORD[48+rdi] > + je NEAR $L$ecb_dec_four > + movups xmm6,XMMWORD[64+rdi] > + cmp rdx,0x60 > + jb NEAR $L$ecb_dec_five > + movups xmm7,XMMWORD[80+rdi] > + je NEAR $L$ecb_dec_six > + movups xmm8,XMMWORD[96+rdi] > + movups xmm0,XMMWORD[rcx] > + xorps xmm9,xmm9 > + call _aesni_decrypt8 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + movups XMMWORD[80+rsi],xmm7 > + pxor xmm7,xmm7 > + movups XMMWORD[96+rsi],xmm8 > + pxor xmm8,xmm8 > + pxor xmm9,xmm9 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_one: > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_4: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_4 > +DB 102,15,56,223,209 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_two: > + call _aesni_decrypt2 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_three: > + call _aesni_decrypt3 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_four: > + call _aesni_decrypt4 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_five: > + xorps xmm7,xmm7 > + call _aesni_decrypt6 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + pxor xmm7,xmm7 > + jmp NEAR $L$ecb_ret > +ALIGN 16 > +$L$ecb_dec_six: > + call _aesni_decrypt6 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + movups XMMWORD[80+rsi],xmm7 > + pxor xmm7,xmm7 > + > +$L$ecb_ret: > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + movaps xmm6,XMMWORD[rsp] > + movaps XMMWORD[rsp],xmm0 > + movaps xmm7,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm8,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm9,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + lea rsp,[88+rsp] > +$L$ecb_enc_ret: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ecb_encrypt: > +global aesni_ccm64_encrypt_blocks > + > +ALIGN 16 > +aesni_ccm64_encrypt_blocks: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ccm64_encrypt_blocks: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea rsp,[((-88))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > +$L$ccm64_enc_body: > + mov eax,DWORD[240+rcx] > + movdqu xmm6,XMMWORD[r8] > + movdqa xmm9,XMMWORD[$L$increment64] > + movdqa xmm7,XMMWORD[$L$bswap_mask] > + > + shl eax,4 > + mov r10d,16 > + lea r11,[rcx] > + movdqu xmm3,XMMWORD[r9] > + movdqa xmm2,xmm6 > + lea rcx,[32+rax*1+rcx] > +DB 102,15,56,0,247 > + sub r10,rax > + jmp NEAR $L$ccm64_enc_outer > +ALIGN 16 > +$L$ccm64_enc_outer: > + movups xmm0,XMMWORD[r11] > + mov rax,r10 > + movups xmm8,XMMWORD[rdi] > + > + xorps xmm2,xmm0 > + movups xmm1,XMMWORD[16+r11] > + xorps xmm0,xmm8 > + xorps xmm3,xmm0 > + movups xmm0,XMMWORD[32+r11] > + > +$L$ccm64_enc2_loop: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ccm64_enc2_loop > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + paddq xmm6,xmm9 > + dec rdx > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > + > + lea rdi,[16+rdi] > + xorps xmm8,xmm2 > + movdqa xmm2,xmm6 > + movups XMMWORD[rsi],xmm8 > +DB 102,15,56,0,215 > + lea rsi,[16+rsi] > + jnz NEAR $L$ccm64_enc_outer > + > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + movups XMMWORD[r9],xmm3 > + pxor xmm3,xmm3 > + pxor xmm8,xmm8 > + pxor xmm6,xmm6 > + movaps xmm6,XMMWORD[rsp] > + movaps XMMWORD[rsp],xmm0 > + movaps xmm7,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm8,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm9,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + lea rsp,[88+rsp] > +$L$ccm64_enc_ret: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ccm64_encrypt_blocks: > +global aesni_ccm64_decrypt_blocks > + > +ALIGN 16 > +aesni_ccm64_decrypt_blocks: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ccm64_decrypt_blocks: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea rsp,[((-88))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > +$L$ccm64_dec_body: > + mov eax,DWORD[240+rcx] > + movups xmm6,XMMWORD[r8] > + movdqu xmm3,XMMWORD[r9] > + movdqa xmm9,XMMWORD[$L$increment64] > + movdqa xmm7,XMMWORD[$L$bswap_mask] > + > + movaps xmm2,xmm6 > + mov r10d,eax > + mov r11,rcx > +DB 102,15,56,0,247 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_enc1_5: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_5 > +DB 102,15,56,221,209 > + shl r10d,4 > + mov eax,16 > + movups xmm8,XMMWORD[rdi] > + paddq xmm6,xmm9 > + lea rdi,[16+rdi] > + sub rax,r10 > + lea rcx,[32+r10*1+r11] > + mov r10,rax > + jmp NEAR $L$ccm64_dec_outer > +ALIGN 16 > +$L$ccm64_dec_outer: > + xorps xmm8,xmm2 > + movdqa xmm2,xmm6 > + movups XMMWORD[rsi],xmm8 > + lea rsi,[16+rsi] > +DB 102,15,56,0,215 > + > + sub rdx,1 > + jz NEAR $L$ccm64_dec_break > + > + movups xmm0,XMMWORD[r11] > + mov rax,r10 > + movups xmm1,XMMWORD[16+r11] > + xorps xmm8,xmm0 > + xorps xmm2,xmm0 > + xorps xmm3,xmm8 > + movups xmm0,XMMWORD[32+r11] > + jmp NEAR $L$ccm64_dec2_loop > +ALIGN 16 > +$L$ccm64_dec2_loop: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ccm64_dec2_loop > + movups xmm8,XMMWORD[rdi] > + paddq xmm6,xmm9 > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,221,208 > +DB 102,15,56,221,216 > + lea rdi,[16+rdi] > + jmp NEAR $L$ccm64_dec_outer > + > +ALIGN 16 > +$L$ccm64_dec_break: > + > + mov eax,DWORD[240+r11] > + movups xmm0,XMMWORD[r11] > + movups xmm1,XMMWORD[16+r11] > + xorps xmm8,xmm0 > + lea r11,[32+r11] > + xorps xmm3,xmm8 > +$L$oop_enc1_6: > +DB 102,15,56,220,217 > + dec eax > + movups xmm1,XMMWORD[r11] > + lea r11,[16+r11] > + jnz NEAR $L$oop_enc1_6 > +DB 102,15,56,221,217 > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + movups XMMWORD[r9],xmm3 > + pxor xmm3,xmm3 > + pxor xmm8,xmm8 > + pxor xmm6,xmm6 > + movaps xmm6,XMMWORD[rsp] > + movaps XMMWORD[rsp],xmm0 > + movaps xmm7,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm8,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm9,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + lea rsp,[88+rsp] > +$L$ccm64_dec_ret: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ccm64_decrypt_blocks: > +global aesni_ctr32_encrypt_blocks > + > +ALIGN 16 > +aesni_ctr32_encrypt_blocks: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ctr32_encrypt_blocks: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + > + > + > + cmp rdx,1 > + jne NEAR $L$ctr32_bulk > + > + > + > + movups xmm2,XMMWORD[r8] > + movups xmm3,XMMWORD[rdi] > + mov edx,DWORD[240+rcx] > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_enc1_7: > +DB 102,15,56,220,209 > + dec edx > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_7 > +DB 102,15,56,221,209 > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + xorps xmm2,xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[rsi],xmm2 > + xorps xmm2,xmm2 > + jmp NEAR $L$ctr32_epilogue > + > +ALIGN 16 > +$L$ctr32_bulk: > + lea r11,[rsp] > + > + push rbp > + > + sub rsp,288 > + and rsp,-16 > + movaps XMMWORD[(-168)+r11],xmm6 > + movaps XMMWORD[(-152)+r11],xmm7 > + movaps XMMWORD[(-136)+r11],xmm8 > + movaps XMMWORD[(-120)+r11],xmm9 > + movaps XMMWORD[(-104)+r11],xmm10 > + movaps XMMWORD[(-88)+r11],xmm11 > + movaps XMMWORD[(-72)+r11],xmm12 > + movaps XMMWORD[(-56)+r11],xmm13 > + movaps XMMWORD[(-40)+r11],xmm14 > + movaps XMMWORD[(-24)+r11],xmm15 > +$L$ctr32_body: > + > + > + > + > + movdqu xmm2,XMMWORD[r8] > + movdqu xmm0,XMMWORD[rcx] > + mov r8d,DWORD[12+r8] > + pxor xmm2,xmm0 > + mov ebp,DWORD[12+rcx] > + movdqa XMMWORD[rsp],xmm2 > + bswap r8d > + movdqa xmm3,xmm2 > + movdqa xmm4,xmm2 > + movdqa xmm5,xmm2 > + movdqa XMMWORD[64+rsp],xmm2 > + movdqa XMMWORD[80+rsp],xmm2 > + movdqa XMMWORD[96+rsp],xmm2 > + mov r10,rdx > + movdqa XMMWORD[112+rsp],xmm2 > + > + lea rax,[1+r8] > + lea rdx,[2+r8] > + bswap eax > + bswap edx > + xor eax,ebp > + xor edx,ebp > +DB 102,15,58,34,216,3 > + lea rax,[3+r8] > + movdqa XMMWORD[16+rsp],xmm3 > +DB 102,15,58,34,226,3 > + bswap eax > + mov rdx,r10 > + lea r10,[4+r8] > + movdqa XMMWORD[32+rsp],xmm4 > + xor eax,ebp > + bswap r10d > +DB 102,15,58,34,232,3 > + xor r10d,ebp > + movdqa XMMWORD[48+rsp],xmm5 > + lea r9,[5+r8] > + mov DWORD[((64+12))+rsp],r10d > + bswap r9d > + lea r10,[6+r8] > + mov eax,DWORD[240+rcx] > + xor r9d,ebp > + bswap r10d > + mov DWORD[((80+12))+rsp],r9d > + xor r10d,ebp > + lea r9,[7+r8] > + mov DWORD[((96+12))+rsp],r10d > + bswap r9d > + mov r10d,DWORD[((OPENSSL_ia32cap_P+4))] > + xor r9d,ebp > + and r10d,71303168 > + mov DWORD[((112+12))+rsp],r9d > + > + movups xmm1,XMMWORD[16+rcx] > + > + movdqa xmm6,XMMWORD[64+rsp] > + movdqa xmm7,XMMWORD[80+rsp] > + > + cmp rdx,8 > + jb NEAR $L$ctr32_tail > + > + sub rdx,6 > + cmp r10d,4194304 > + je NEAR $L$ctr32_6x > + > + lea rcx,[128+rcx] > + sub rdx,2 > + jmp NEAR $L$ctr32_loop8 > + > +ALIGN 16 > +$L$ctr32_6x: > + shl eax,4 > + mov r10d,48 > + bswap ebp > + lea rcx,[32+rax*1+rcx] > + sub r10,rax > + jmp NEAR $L$ctr32_loop6 > + > +ALIGN 16 > +$L$ctr32_loop6: > + add r8d,6 > + movups xmm0,XMMWORD[((-48))+r10*1+rcx] > +DB 102,15,56,220,209 > + mov eax,r8d > + xor eax,ebp > +DB 102,15,56,220,217 > +DB 0x0f,0x38,0xf1,0x44,0x24,12 > + lea eax,[1+r8] > +DB 102,15,56,220,225 > + xor eax,ebp > +DB 0x0f,0x38,0xf1,0x44,0x24,28 > +DB 102,15,56,220,233 > + lea eax,[2+r8] > + xor eax,ebp > +DB 102,15,56,220,241 > +DB 0x0f,0x38,0xf1,0x44,0x24,44 > + lea eax,[3+r8] > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[((-32))+r10*1+rcx] > + xor eax,ebp > + > +DB 102,15,56,220,208 > +DB 0x0f,0x38,0xf1,0x44,0x24,60 > + lea eax,[4+r8] > +DB 102,15,56,220,216 > + xor eax,ebp > +DB 0x0f,0x38,0xf1,0x44,0x24,76 > +DB 102,15,56,220,224 > + lea eax,[5+r8] > + xor eax,ebp > +DB 102,15,56,220,232 > +DB 0x0f,0x38,0xf1,0x44,0x24,92 > + mov rax,r10 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[((-16))+r10*1+rcx] > + > + call $L$enc_loop6 > + > + movdqu xmm8,XMMWORD[rdi] > + movdqu xmm9,XMMWORD[16+rdi] > + movdqu xmm10,XMMWORD[32+rdi] > + movdqu xmm11,XMMWORD[48+rdi] > + movdqu xmm12,XMMWORD[64+rdi] > + movdqu xmm13,XMMWORD[80+rdi] > + lea rdi,[96+rdi] > + movups xmm1,XMMWORD[((-64))+r10*1+rcx] > + pxor xmm8,xmm2 > + movaps xmm2,XMMWORD[rsp] > + pxor xmm9,xmm3 > + movaps xmm3,XMMWORD[16+rsp] > + pxor xmm10,xmm4 > + movaps xmm4,XMMWORD[32+rsp] > + pxor xmm11,xmm5 > + movaps xmm5,XMMWORD[48+rsp] > + pxor xmm12,xmm6 > + movaps xmm6,XMMWORD[64+rsp] > + pxor xmm13,xmm7 > + movaps xmm7,XMMWORD[80+rsp] > + movdqu XMMWORD[rsi],xmm8 > + movdqu XMMWORD[16+rsi],xmm9 > + movdqu XMMWORD[32+rsi],xmm10 > + movdqu XMMWORD[48+rsi],xmm11 > + movdqu XMMWORD[64+rsi],xmm12 > + movdqu XMMWORD[80+rsi],xmm13 > + lea rsi,[96+rsi] > + > + sub rdx,6 > + jnc NEAR $L$ctr32_loop6 > + > + add rdx,6 > + jz NEAR $L$ctr32_done > + > + lea eax,[((-48))+r10] > + lea rcx,[((-80))+r10*1+rcx] > + neg eax > + shr eax,4 > + jmp NEAR $L$ctr32_tail > + > +ALIGN 32 > +$L$ctr32_loop8: > + add r8d,8 > + movdqa xmm8,XMMWORD[96+rsp] > +DB 102,15,56,220,209 > + mov r9d,r8d > + movdqa xmm9,XMMWORD[112+rsp] > +DB 102,15,56,220,217 > + bswap r9d > + movups xmm0,XMMWORD[((32-128))+rcx] > +DB 102,15,56,220,225 > + xor r9d,ebp > + nop > +DB 102,15,56,220,233 > + mov DWORD[((0+12))+rsp],r9d > + lea r9,[1+r8] > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((48-128))+rcx] > + bswap r9d > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + mov DWORD[((16+12))+rsp],r9d > + lea r9,[2+r8] > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((64-128))+rcx] > + bswap r9d > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + mov DWORD[((32+12))+rsp],r9d > + lea r9,[3+r8] > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((80-128))+rcx] > + bswap r9d > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + mov DWORD[((48+12))+rsp],r9d > + lea r9,[4+r8] > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((96-128))+rcx] > + bswap r9d > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + mov DWORD[((64+12))+rsp],r9d > + lea r9,[5+r8] > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((112-128))+rcx] > + bswap r9d > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + mov DWORD[((80+12))+rsp],r9d > + lea r9,[6+r8] > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((128-128))+rcx] > + bswap r9d > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + xor r9d,ebp > +DB 0x66,0x90 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + mov DWORD[((96+12))+rsp],r9d > + lea r9,[7+r8] > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((144-128))+rcx] > + bswap r9d > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > + xor r9d,ebp > + movdqu xmm10,XMMWORD[rdi] > +DB 102,15,56,220,232 > + mov DWORD[((112+12))+rsp],r9d > + cmp eax,11 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((160-128))+rcx] > + > + jb NEAR $L$ctr32_enc_done > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((176-128))+rcx] > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((192-128))+rcx] > + je NEAR $L$ctr32_enc_done > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movups xmm1,XMMWORD[((208-128))+rcx] > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > +DB 102,68,15,56,220,192 > +DB 102,68,15,56,220,200 > + movups xmm0,XMMWORD[((224-128))+rcx] > + jmp NEAR $L$ctr32_enc_done > + > +ALIGN 16 > +$L$ctr32_enc_done: > + movdqu xmm11,XMMWORD[16+rdi] > + pxor xmm10,xmm0 > + movdqu xmm12,XMMWORD[32+rdi] > + pxor xmm11,xmm0 > + movdqu xmm13,XMMWORD[48+rdi] > + pxor xmm12,xmm0 > + movdqu xmm14,XMMWORD[64+rdi] > + pxor xmm13,xmm0 > + movdqu xmm15,XMMWORD[80+rdi] > + pxor xmm14,xmm0 > + pxor xmm15,xmm0 > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > +DB 102,68,15,56,220,201 > + movdqu xmm1,XMMWORD[96+rdi] > + lea rdi,[128+rdi] > + > +DB 102,65,15,56,221,210 > + pxor xmm1,xmm0 > + movdqu xmm10,XMMWORD[((112-128))+rdi] > +DB 102,65,15,56,221,219 > + pxor xmm10,xmm0 > + movdqa xmm11,XMMWORD[rsp] > +DB 102,65,15,56,221,228 > +DB 102,65,15,56,221,237 > + movdqa xmm12,XMMWORD[16+rsp] > + movdqa xmm13,XMMWORD[32+rsp] > +DB 102,65,15,56,221,246 > +DB 102,65,15,56,221,255 > + movdqa xmm14,XMMWORD[48+rsp] > + movdqa xmm15,XMMWORD[64+rsp] > +DB 102,68,15,56,221,193 > + movdqa xmm0,XMMWORD[80+rsp] > + movups xmm1,XMMWORD[((16-128))+rcx] > +DB 102,69,15,56,221,202 > + > + movups XMMWORD[rsi],xmm2 > + movdqa xmm2,xmm11 > + movups XMMWORD[16+rsi],xmm3 > + movdqa xmm3,xmm12 > + movups XMMWORD[32+rsi],xmm4 > + movdqa xmm4,xmm13 > + movups XMMWORD[48+rsi],xmm5 > + movdqa xmm5,xmm14 > + movups XMMWORD[64+rsi],xmm6 > + movdqa xmm6,xmm15 > + movups XMMWORD[80+rsi],xmm7 > + movdqa xmm7,xmm0 > + movups XMMWORD[96+rsi],xmm8 > + movups XMMWORD[112+rsi],xmm9 > + lea rsi,[128+rsi] > + > + sub rdx,8 > + jnc NEAR $L$ctr32_loop8 > + > + add rdx,8 > + jz NEAR $L$ctr32_done > + lea rcx,[((-128))+rcx] > + > +$L$ctr32_tail: > + > + > + lea rcx,[16+rcx] > + cmp rdx,4 > + jb NEAR $L$ctr32_loop3 > + je NEAR $L$ctr32_loop4 > + > + > + shl eax,4 > + movdqa xmm8,XMMWORD[96+rsp] > + pxor xmm9,xmm9 > + > + movups xmm0,XMMWORD[16+rcx] > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > + lea rcx,[((32-16))+rax*1+rcx] > + neg rax > +DB 102,15,56,220,225 > + add rax,16 > + movups xmm10,XMMWORD[rdi] > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > + movups xmm11,XMMWORD[16+rdi] > + movups xmm12,XMMWORD[32+rdi] > +DB 102,15,56,220,249 > +DB 102,68,15,56,220,193 > + > + call $L$enc_loop8_enter > + > + movdqu xmm13,XMMWORD[48+rdi] > + pxor xmm2,xmm10 > + movdqu xmm10,XMMWORD[64+rdi] > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm6,xmm10 > + movdqu XMMWORD[48+rsi],xmm5 > + movdqu XMMWORD[64+rsi],xmm6 > + cmp rdx,6 > + jb NEAR $L$ctr32_done > + > + movups xmm11,XMMWORD[80+rdi] > + xorps xmm7,xmm11 > + movups XMMWORD[80+rsi],xmm7 > + je NEAR $L$ctr32_done > + > + movups xmm12,XMMWORD[96+rdi] > + xorps xmm8,xmm12 > + movups XMMWORD[96+rsi],xmm8 > + jmp NEAR $L$ctr32_done > + > +ALIGN 32 > +$L$ctr32_loop4: > +DB 102,15,56,220,209 > + lea rcx,[16+rcx] > + dec eax > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[rcx] > + jnz NEAR $L$ctr32_loop4 > +DB 102,15,56,221,209 > +DB 102,15,56,221,217 > + movups xmm10,XMMWORD[rdi] > + movups xmm11,XMMWORD[16+rdi] > +DB 102,15,56,221,225 > +DB 102,15,56,221,233 > + movups xmm12,XMMWORD[32+rdi] > + movups xmm13,XMMWORD[48+rdi] > + > + xorps xmm2,xmm10 > + movups XMMWORD[rsi],xmm2 > + xorps xmm3,xmm11 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm4,xmm12 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm5,xmm13 > + movdqu XMMWORD[48+rsi],xmm5 > + jmp NEAR $L$ctr32_done > + > +ALIGN 32 > +$L$ctr32_loop3: > +DB 102,15,56,220,209 > + lea rcx,[16+rcx] > + dec eax > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > + movups xmm1,XMMWORD[rcx] > + jnz NEAR $L$ctr32_loop3 > +DB 102,15,56,221,209 > +DB 102,15,56,221,217 > +DB 102,15,56,221,225 > + > + movups xmm10,XMMWORD[rdi] > + xorps xmm2,xmm10 > + movups XMMWORD[rsi],xmm2 > + cmp rdx,2 > + jb NEAR $L$ctr32_done > + > + movups xmm11,XMMWORD[16+rdi] > + xorps xmm3,xmm11 > + movups XMMWORD[16+rsi],xmm3 > + je NEAR $L$ctr32_done > + > + movups xmm12,XMMWORD[32+rdi] > + xorps xmm4,xmm12 > + movups XMMWORD[32+rsi],xmm4 > + > +$L$ctr32_done: > + xorps xmm0,xmm0 > + xor ebp,ebp > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + movaps xmm6,XMMWORD[((-168))+r11] > + movaps XMMWORD[(-168)+r11],xmm0 > + movaps xmm7,XMMWORD[((-152))+r11] > + movaps XMMWORD[(-152)+r11],xmm0 > + movaps xmm8,XMMWORD[((-136))+r11] > + movaps XMMWORD[(-136)+r11],xmm0 > + movaps xmm9,XMMWORD[((-120))+r11] > + movaps XMMWORD[(-120)+r11],xmm0 > + movaps xmm10,XMMWORD[((-104))+r11] > + movaps XMMWORD[(-104)+r11],xmm0 > + movaps xmm11,XMMWORD[((-88))+r11] > + movaps XMMWORD[(-88)+r11],xmm0 > + movaps xmm12,XMMWORD[((-72))+r11] > + movaps XMMWORD[(-72)+r11],xmm0 > + movaps xmm13,XMMWORD[((-56))+r11] > + movaps XMMWORD[(-56)+r11],xmm0 > + movaps xmm14,XMMWORD[((-40))+r11] > + movaps XMMWORD[(-40)+r11],xmm0 > + movaps xmm15,XMMWORD[((-24))+r11] > + movaps XMMWORD[(-24)+r11],xmm0 > + movaps XMMWORD[rsp],xmm0 > + movaps XMMWORD[16+rsp],xmm0 > + movaps XMMWORD[32+rsp],xmm0 > + movaps XMMWORD[48+rsp],xmm0 > + movaps XMMWORD[64+rsp],xmm0 > + movaps XMMWORD[80+rsp],xmm0 > + movaps XMMWORD[96+rsp],xmm0 > + movaps XMMWORD[112+rsp],xmm0 > + mov rbp,QWORD[((-8))+r11] > + > + lea rsp,[r11] > + > +$L$ctr32_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ctr32_encrypt_blocks: > +global aesni_xts_encrypt > + > +ALIGN 16 > +aesni_xts_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_xts_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea r11,[rsp] > + > + push rbp > + > + sub rsp,272 > + and rsp,-16 > + movaps XMMWORD[(-168)+r11],xmm6 > + movaps XMMWORD[(-152)+r11],xmm7 > + movaps XMMWORD[(-136)+r11],xmm8 > + movaps XMMWORD[(-120)+r11],xmm9 > + movaps XMMWORD[(-104)+r11],xmm10 > + movaps XMMWORD[(-88)+r11],xmm11 > + movaps XMMWORD[(-72)+r11],xmm12 > + movaps XMMWORD[(-56)+r11],xmm13 > + movaps XMMWORD[(-40)+r11],xmm14 > + movaps XMMWORD[(-24)+r11],xmm15 > +$L$xts_enc_body: > + movups xmm2,XMMWORD[r9] > + mov eax,DWORD[240+r8] > + mov r10d,DWORD[240+rcx] > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[16+r8] > + lea r8,[32+r8] > + xorps xmm2,xmm0 > +$L$oop_enc1_8: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[r8] > + lea r8,[16+r8] > + jnz NEAR $L$oop_enc1_8 > +DB 102,15,56,221,209 > + movups xmm0,XMMWORD[rcx] > + mov rbp,rcx > + mov eax,r10d > + shl r10d,4 > + mov r9,rdx > + and rdx,-16 > + > + movups xmm1,XMMWORD[16+r10*1+rcx] > + > + movdqa xmm8,XMMWORD[$L$xts_magic] > + movdqa xmm15,xmm2 > + pshufd xmm9,xmm2,0x5f > + pxor xmm1,xmm0 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm10,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm10,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm11,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm11,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm12,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm12,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm13,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm13,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm15 > + psrad xmm9,31 > + paddq xmm15,xmm15 > + pand xmm9,xmm8 > + pxor xmm14,xmm0 > + pxor xmm15,xmm9 > + movaps XMMWORD[96+rsp],xmm1 > + > + sub rdx,16*6 > + jc NEAR $L$xts_enc_short > + > + mov eax,16+96 > + lea rcx,[32+r10*1+rbp] > + sub rax,r10 > + movups xmm1,XMMWORD[16+rbp] > + mov r10,rax > + lea r8,[$L$xts_magic] > + jmp NEAR $L$xts_enc_grandloop > + > +ALIGN 32 > +$L$xts_enc_grandloop: > + movdqu xmm2,XMMWORD[rdi] > + movdqa xmm8,xmm0 > + movdqu xmm3,XMMWORD[16+rdi] > + pxor xmm2,xmm10 > + movdqu xmm4,XMMWORD[32+rdi] > + pxor xmm3,xmm11 > +DB 102,15,56,220,209 > + movdqu xmm5,XMMWORD[48+rdi] > + pxor xmm4,xmm12 > +DB 102,15,56,220,217 > + movdqu xmm6,XMMWORD[64+rdi] > + pxor xmm5,xmm13 > +DB 102,15,56,220,225 > + movdqu xmm7,XMMWORD[80+rdi] > + pxor xmm8,xmm15 > + movdqa xmm9,XMMWORD[96+rsp] > + pxor xmm6,xmm14 > +DB 102,15,56,220,233 > + movups xmm0,XMMWORD[32+rbp] > + lea rdi,[96+rdi] > + pxor xmm7,xmm8 > + > + pxor xmm10,xmm9 > +DB 102,15,56,220,241 > + pxor xmm11,xmm9 > + movdqa XMMWORD[rsp],xmm10 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[48+rbp] > + pxor xmm12,xmm9 > + > +DB 102,15,56,220,208 > + pxor xmm13,xmm9 > + movdqa XMMWORD[16+rsp],xmm11 > +DB 102,15,56,220,216 > + pxor xmm14,xmm9 > + movdqa XMMWORD[32+rsp],xmm12 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + pxor xmm8,xmm9 > + movdqa XMMWORD[64+rsp],xmm14 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[64+rbp] > + movdqa XMMWORD[80+rsp],xmm8 > + pshufd xmm9,xmm15,0x5f > + jmp NEAR $L$xts_enc_loop6 > +ALIGN 32 > +$L$xts_enc_loop6: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[((-64))+rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[((-80))+rax*1+rcx] > + jnz NEAR $L$xts_enc_loop6 > + > + movdqa xmm8,XMMWORD[r8] > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > +DB 102,15,56,220,209 > + paddq xmm15,xmm15 > + psrad xmm14,31 > +DB 102,15,56,220,217 > + pand xmm14,xmm8 > + movups xmm10,XMMWORD[rbp] > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > + pxor xmm15,xmm14 > + movaps xmm11,xmm10 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[((-64))+rcx] > + > + movdqa xmm14,xmm9 > +DB 102,15,56,220,208 > + paddd xmm9,xmm9 > + pxor xmm10,xmm15 > +DB 102,15,56,220,216 > + psrad xmm14,31 > + paddq xmm15,xmm15 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + pand xmm14,xmm8 > + movaps xmm12,xmm11 > +DB 102,15,56,220,240 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[((-48))+rcx] > + > + paddd xmm9,xmm9 > +DB 102,15,56,220,209 > + pxor xmm11,xmm15 > + psrad xmm14,31 > +DB 102,15,56,220,217 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movdqa XMMWORD[48+rsp],xmm13 > + pxor xmm15,xmm14 > +DB 102,15,56,220,241 > + movaps xmm13,xmm12 > + movdqa xmm14,xmm9 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[((-32))+rcx] > + > + paddd xmm9,xmm9 > +DB 102,15,56,220,208 > + pxor xmm12,xmm15 > + psrad xmm14,31 > +DB 102,15,56,220,216 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > + pxor xmm15,xmm14 > + movaps xmm14,xmm13 > +DB 102,15,56,220,248 > + > + movdqa xmm0,xmm9 > + paddd xmm9,xmm9 > +DB 102,15,56,220,209 > + pxor xmm13,xmm15 > + psrad xmm0,31 > +DB 102,15,56,220,217 > + paddq xmm15,xmm15 > + pand xmm0,xmm8 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + pxor xmm15,xmm0 > + movups xmm0,XMMWORD[rbp] > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[16+rbp] > + > + pxor xmm14,xmm15 > +DB 102,15,56,221,84,36,0 > + psrad xmm9,31 > + paddq xmm15,xmm15 > +DB 102,15,56,221,92,36,16 > +DB 102,15,56,221,100,36,32 > + pand xmm9,xmm8 > + mov rax,r10 > +DB 102,15,56,221,108,36,48 > +DB 102,15,56,221,116,36,64 > +DB 102,15,56,221,124,36,80 > + pxor xmm15,xmm9 > + > + lea rsi,[96+rsi] > + movups XMMWORD[(-96)+rsi],xmm2 > + movups XMMWORD[(-80)+rsi],xmm3 > + movups XMMWORD[(-64)+rsi],xmm4 > + movups XMMWORD[(-48)+rsi],xmm5 > + movups XMMWORD[(-32)+rsi],xmm6 > + movups XMMWORD[(-16)+rsi],xmm7 > + sub rdx,16*6 > + jnc NEAR $L$xts_enc_grandloop > + > + mov eax,16+96 > + sub eax,r10d > + mov rcx,rbp > + shr eax,4 > + > +$L$xts_enc_short: > + > + mov r10d,eax > + pxor xmm10,xmm0 > + add rdx,16*6 > + jz NEAR $L$xts_enc_done > + > + pxor xmm11,xmm0 > + cmp rdx,0x20 > + jb NEAR $L$xts_enc_one > + pxor xmm12,xmm0 > + je NEAR $L$xts_enc_two > + > + pxor xmm13,xmm0 > + cmp rdx,0x40 > + jb NEAR $L$xts_enc_three > + pxor xmm14,xmm0 > + je NEAR $L$xts_enc_four > + > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + pxor xmm2,xmm10 > + movdqu xmm5,XMMWORD[48+rdi] > + pxor xmm3,xmm11 > + movdqu xmm6,XMMWORD[64+rdi] > + lea rdi,[80+rdi] > + pxor xmm4,xmm12 > + pxor xmm5,xmm13 > + pxor xmm6,xmm14 > + pxor xmm7,xmm7 > + > + call _aesni_encrypt6 > + > + xorps xmm2,xmm10 > + movdqa xmm10,xmm15 > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + movdqu XMMWORD[rsi],xmm2 > + xorps xmm5,xmm13 > + movdqu XMMWORD[16+rsi],xmm3 > + xorps xmm6,xmm14 > + movdqu XMMWORD[32+rsi],xmm4 > + movdqu XMMWORD[48+rsi],xmm5 > + movdqu XMMWORD[64+rsi],xmm6 > + lea rsi,[80+rsi] > + jmp NEAR $L$xts_enc_done > + > +ALIGN 16 > +$L$xts_enc_one: > + movups xmm2,XMMWORD[rdi] > + lea rdi,[16+rdi] > + xorps xmm2,xmm10 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_enc1_9: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_9 > +DB 102,15,56,221,209 > + xorps xmm2,xmm10 > + movdqa xmm10,xmm11 > + movups XMMWORD[rsi],xmm2 > + lea rsi,[16+rsi] > + jmp NEAR $L$xts_enc_done > + > +ALIGN 16 > +$L$xts_enc_two: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + lea rdi,[32+rdi] > + xorps xmm2,xmm10 > + xorps xmm3,xmm11 > + > + call _aesni_encrypt2 > + > + xorps xmm2,xmm10 > + movdqa xmm10,xmm12 > + xorps xmm3,xmm11 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + lea rsi,[32+rsi] > + jmp NEAR $L$xts_enc_done > + > +ALIGN 16 > +$L$xts_enc_three: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + movups xmm4,XMMWORD[32+rdi] > + lea rdi,[48+rdi] > + xorps xmm2,xmm10 > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + > + call _aesni_encrypt3 > + > + xorps xmm2,xmm10 > + movdqa xmm10,xmm13 > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + lea rsi,[48+rsi] > + jmp NEAR $L$xts_enc_done > + > +ALIGN 16 > +$L$xts_enc_four: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + movups xmm4,XMMWORD[32+rdi] > + xorps xmm2,xmm10 > + movups xmm5,XMMWORD[48+rdi] > + lea rdi,[64+rdi] > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + xorps xmm5,xmm13 > + > + call _aesni_encrypt4 > + > + pxor xmm2,xmm10 > + movdqa xmm10,xmm14 > + pxor xmm3,xmm11 > + pxor xmm4,xmm12 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm5,xmm13 > + movdqu XMMWORD[16+rsi],xmm3 > + movdqu XMMWORD[32+rsi],xmm4 > + movdqu XMMWORD[48+rsi],xmm5 > + lea rsi,[64+rsi] > + jmp NEAR $L$xts_enc_done > + > +ALIGN 16 > +$L$xts_enc_done: > + and r9,15 > + jz NEAR $L$xts_enc_ret > + mov rdx,r9 > + > +$L$xts_enc_steal: > + movzx eax,BYTE[rdi] > + movzx ecx,BYTE[((-16))+rsi] > + lea rdi,[1+rdi] > + mov BYTE[((-16))+rsi],al > + mov BYTE[rsi],cl > + lea rsi,[1+rsi] > + sub rdx,1 > + jnz NEAR $L$xts_enc_steal > + > + sub rsi,r9 > + mov rcx,rbp > + mov eax,r10d > + > + movups xmm2,XMMWORD[((-16))+rsi] > + xorps xmm2,xmm10 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_enc1_10: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_10 > +DB 102,15,56,221,209 > + xorps xmm2,xmm10 > + movups XMMWORD[(-16)+rsi],xmm2 > + > +$L$xts_enc_ret: > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + movaps xmm6,XMMWORD[((-168))+r11] > + movaps XMMWORD[(-168)+r11],xmm0 > + movaps xmm7,XMMWORD[((-152))+r11] > + movaps XMMWORD[(-152)+r11],xmm0 > + movaps xmm8,XMMWORD[((-136))+r11] > + movaps XMMWORD[(-136)+r11],xmm0 > + movaps xmm9,XMMWORD[((-120))+r11] > + movaps XMMWORD[(-120)+r11],xmm0 > + movaps xmm10,XMMWORD[((-104))+r11] > + movaps XMMWORD[(-104)+r11],xmm0 > + movaps xmm11,XMMWORD[((-88))+r11] > + movaps XMMWORD[(-88)+r11],xmm0 > + movaps xmm12,XMMWORD[((-72))+r11] > + movaps XMMWORD[(-72)+r11],xmm0 > + movaps xmm13,XMMWORD[((-56))+r11] > + movaps XMMWORD[(-56)+r11],xmm0 > + movaps xmm14,XMMWORD[((-40))+r11] > + movaps XMMWORD[(-40)+r11],xmm0 > + movaps xmm15,XMMWORD[((-24))+r11] > + movaps XMMWORD[(-24)+r11],xmm0 > + movaps XMMWORD[rsp],xmm0 > + movaps XMMWORD[16+rsp],xmm0 > + movaps XMMWORD[32+rsp],xmm0 > + movaps XMMWORD[48+rsp],xmm0 > + movaps XMMWORD[64+rsp],xmm0 > + movaps XMMWORD[80+rsp],xmm0 > + movaps XMMWORD[96+rsp],xmm0 > + mov rbp,QWORD[((-8))+r11] > + > + lea rsp,[r11] > + > +$L$xts_enc_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_xts_encrypt: > +global aesni_xts_decrypt > + > +ALIGN 16 > +aesni_xts_decrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_xts_decrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea r11,[rsp] > + > + push rbp > + > + sub rsp,272 > + and rsp,-16 > + movaps XMMWORD[(-168)+r11],xmm6 > + movaps XMMWORD[(-152)+r11],xmm7 > + movaps XMMWORD[(-136)+r11],xmm8 > + movaps XMMWORD[(-120)+r11],xmm9 > + movaps XMMWORD[(-104)+r11],xmm10 > + movaps XMMWORD[(-88)+r11],xmm11 > + movaps XMMWORD[(-72)+r11],xmm12 > + movaps XMMWORD[(-56)+r11],xmm13 > + movaps XMMWORD[(-40)+r11],xmm14 > + movaps XMMWORD[(-24)+r11],xmm15 > +$L$xts_dec_body: > + movups xmm2,XMMWORD[r9] > + mov eax,DWORD[240+r8] > + mov r10d,DWORD[240+rcx] > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[16+r8] > + lea r8,[32+r8] > + xorps xmm2,xmm0 > +$L$oop_enc1_11: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[r8] > + lea r8,[16+r8] > + jnz NEAR $L$oop_enc1_11 > +DB 102,15,56,221,209 > + xor eax,eax > + test rdx,15 > + setnz al > + shl rax,4 > + sub rdx,rax > + > + movups xmm0,XMMWORD[rcx] > + mov rbp,rcx > + mov eax,r10d > + shl r10d,4 > + mov r9,rdx > + and rdx,-16 > + > + movups xmm1,XMMWORD[16+r10*1+rcx] > + > + movdqa xmm8,XMMWORD[$L$xts_magic] > + movdqa xmm15,xmm2 > + pshufd xmm9,xmm2,0x5f > + pxor xmm1,xmm0 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm10,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm10,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm11,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm11,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm12,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm12,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > + movdqa xmm13,xmm15 > + psrad xmm14,31 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > + pxor xmm13,xmm0 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm15 > + psrad xmm9,31 > + paddq xmm15,xmm15 > + pand xmm9,xmm8 > + pxor xmm14,xmm0 > + pxor xmm15,xmm9 > + movaps XMMWORD[96+rsp],xmm1 > + > + sub rdx,16*6 > + jc NEAR $L$xts_dec_short > + > + mov eax,16+96 > + lea rcx,[32+r10*1+rbp] > + sub rax,r10 > + movups xmm1,XMMWORD[16+rbp] > + mov r10,rax > + lea r8,[$L$xts_magic] > + jmp NEAR $L$xts_dec_grandloop > + > +ALIGN 32 > +$L$xts_dec_grandloop: > + movdqu xmm2,XMMWORD[rdi] > + movdqa xmm8,xmm0 > + movdqu xmm3,XMMWORD[16+rdi] > + pxor xmm2,xmm10 > + movdqu xmm4,XMMWORD[32+rdi] > + pxor xmm3,xmm11 > +DB 102,15,56,222,209 > + movdqu xmm5,XMMWORD[48+rdi] > + pxor xmm4,xmm12 > +DB 102,15,56,222,217 > + movdqu xmm6,XMMWORD[64+rdi] > + pxor xmm5,xmm13 > +DB 102,15,56,222,225 > + movdqu xmm7,XMMWORD[80+rdi] > + pxor xmm8,xmm15 > + movdqa xmm9,XMMWORD[96+rsp] > + pxor xmm6,xmm14 > +DB 102,15,56,222,233 > + movups xmm0,XMMWORD[32+rbp] > + lea rdi,[96+rdi] > + pxor xmm7,xmm8 > + > + pxor xmm10,xmm9 > +DB 102,15,56,222,241 > + pxor xmm11,xmm9 > + movdqa XMMWORD[rsp],xmm10 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[48+rbp] > + pxor xmm12,xmm9 > + > +DB 102,15,56,222,208 > + pxor xmm13,xmm9 > + movdqa XMMWORD[16+rsp],xmm11 > +DB 102,15,56,222,216 > + pxor xmm14,xmm9 > + movdqa XMMWORD[32+rsp],xmm12 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + pxor xmm8,xmm9 > + movdqa XMMWORD[64+rsp],xmm14 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[64+rbp] > + movdqa XMMWORD[80+rsp],xmm8 > + pshufd xmm9,xmm15,0x5f > + jmp NEAR $L$xts_dec_loop6 > +ALIGN 32 > +$L$xts_dec_loop6: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[((-64))+rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[((-80))+rax*1+rcx] > + jnz NEAR $L$xts_dec_loop6 > + > + movdqa xmm8,XMMWORD[r8] > + movdqa xmm14,xmm9 > + paddd xmm9,xmm9 > +DB 102,15,56,222,209 > + paddq xmm15,xmm15 > + psrad xmm14,31 > +DB 102,15,56,222,217 > + pand xmm14,xmm8 > + movups xmm10,XMMWORD[rbp] > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > + pxor xmm15,xmm14 > + movaps xmm11,xmm10 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[((-64))+rcx] > + > + movdqa xmm14,xmm9 > +DB 102,15,56,222,208 > + paddd xmm9,xmm9 > + pxor xmm10,xmm15 > +DB 102,15,56,222,216 > + psrad xmm14,31 > + paddq xmm15,xmm15 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + pand xmm14,xmm8 > + movaps xmm12,xmm11 > +DB 102,15,56,222,240 > + pxor xmm15,xmm14 > + movdqa xmm14,xmm9 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[((-48))+rcx] > + > + paddd xmm9,xmm9 > +DB 102,15,56,222,209 > + pxor xmm11,xmm15 > + psrad xmm14,31 > +DB 102,15,56,222,217 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movdqa XMMWORD[48+rsp],xmm13 > + pxor xmm15,xmm14 > +DB 102,15,56,222,241 > + movaps xmm13,xmm12 > + movdqa xmm14,xmm9 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[((-32))+rcx] > + > + paddd xmm9,xmm9 > +DB 102,15,56,222,208 > + pxor xmm12,xmm15 > + psrad xmm14,31 > +DB 102,15,56,222,216 > + paddq xmm15,xmm15 > + pand xmm14,xmm8 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > + pxor xmm15,xmm14 > + movaps xmm14,xmm13 > +DB 102,15,56,222,248 > + > + movdqa xmm0,xmm9 > + paddd xmm9,xmm9 > +DB 102,15,56,222,209 > + pxor xmm13,xmm15 > + psrad xmm0,31 > +DB 102,15,56,222,217 > + paddq xmm15,xmm15 > + pand xmm0,xmm8 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + pxor xmm15,xmm0 > + movups xmm0,XMMWORD[rbp] > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[16+rbp] > + > + pxor xmm14,xmm15 > +DB 102,15,56,223,84,36,0 > + psrad xmm9,31 > + paddq xmm15,xmm15 > +DB 102,15,56,223,92,36,16 > +DB 102,15,56,223,100,36,32 > + pand xmm9,xmm8 > + mov rax,r10 > +DB 102,15,56,223,108,36,48 > +DB 102,15,56,223,116,36,64 > +DB 102,15,56,223,124,36,80 > + pxor xmm15,xmm9 > + > + lea rsi,[96+rsi] > + movups XMMWORD[(-96)+rsi],xmm2 > + movups XMMWORD[(-80)+rsi],xmm3 > + movups XMMWORD[(-64)+rsi],xmm4 > + movups XMMWORD[(-48)+rsi],xmm5 > + movups XMMWORD[(-32)+rsi],xmm6 > + movups XMMWORD[(-16)+rsi],xmm7 > + sub rdx,16*6 > + jnc NEAR $L$xts_dec_grandloop > + > + mov eax,16+96 > + sub eax,r10d > + mov rcx,rbp > + shr eax,4 > + > +$L$xts_dec_short: > + > + mov r10d,eax > + pxor xmm10,xmm0 > + pxor xmm11,xmm0 > + add rdx,16*6 > + jz NEAR $L$xts_dec_done > + > + pxor xmm12,xmm0 > + cmp rdx,0x20 > + jb NEAR $L$xts_dec_one > + pxor xmm13,xmm0 > + je NEAR $L$xts_dec_two > + > + pxor xmm14,xmm0 > + cmp rdx,0x40 > + jb NEAR $L$xts_dec_three > + je NEAR $L$xts_dec_four > + > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + pxor xmm2,xmm10 > + movdqu xmm5,XMMWORD[48+rdi] > + pxor xmm3,xmm11 > + movdqu xmm6,XMMWORD[64+rdi] > + lea rdi,[80+rdi] > + pxor xmm4,xmm12 > + pxor xmm5,xmm13 > + pxor xmm6,xmm14 > + > + call _aesni_decrypt6 > + > + xorps xmm2,xmm10 > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + movdqu XMMWORD[rsi],xmm2 > + xorps xmm5,xmm13 > + movdqu XMMWORD[16+rsi],xmm3 > + xorps xmm6,xmm14 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm14,xmm14 > + movdqu XMMWORD[48+rsi],xmm5 > + pcmpgtd xmm14,xmm15 > + movdqu XMMWORD[64+rsi],xmm6 > + lea rsi,[80+rsi] > + pshufd xmm11,xmm14,0x13 > + and r9,15 > + jz NEAR $L$xts_dec_ret > + > + movdqa xmm10,xmm15 > + paddq xmm15,xmm15 > + pand xmm11,xmm8 > + pxor xmm11,xmm15 > + jmp NEAR $L$xts_dec_done2 > + > +ALIGN 16 > +$L$xts_dec_one: > + movups xmm2,XMMWORD[rdi] > + lea rdi,[16+rdi] > + xorps xmm2,xmm10 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_12: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_12 > +DB 102,15,56,223,209 > + xorps xmm2,xmm10 > + movdqa xmm10,xmm11 > + movups XMMWORD[rsi],xmm2 > + movdqa xmm11,xmm12 > + lea rsi,[16+rsi] > + jmp NEAR $L$xts_dec_done > + > +ALIGN 16 > +$L$xts_dec_two: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + lea rdi,[32+rdi] > + xorps xmm2,xmm10 > + xorps xmm3,xmm11 > + > + call _aesni_decrypt2 > + > + xorps xmm2,xmm10 > + movdqa xmm10,xmm12 > + xorps xmm3,xmm11 > + movdqa xmm11,xmm13 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + lea rsi,[32+rsi] > + jmp NEAR $L$xts_dec_done > + > +ALIGN 16 > +$L$xts_dec_three: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + movups xmm4,XMMWORD[32+rdi] > + lea rdi,[48+rdi] > + xorps xmm2,xmm10 > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + > + call _aesni_decrypt3 > + > + xorps xmm2,xmm10 > + movdqa xmm10,xmm13 > + xorps xmm3,xmm11 > + movdqa xmm11,xmm14 > + xorps xmm4,xmm12 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + lea rsi,[48+rsi] > + jmp NEAR $L$xts_dec_done > + > +ALIGN 16 > +$L$xts_dec_four: > + movups xmm2,XMMWORD[rdi] > + movups xmm3,XMMWORD[16+rdi] > + movups xmm4,XMMWORD[32+rdi] > + xorps xmm2,xmm10 > + movups xmm5,XMMWORD[48+rdi] > + lea rdi,[64+rdi] > + xorps xmm3,xmm11 > + xorps xmm4,xmm12 > + xorps xmm5,xmm13 > + > + call _aesni_decrypt4 > + > + pxor xmm2,xmm10 > + movdqa xmm10,xmm14 > + pxor xmm3,xmm11 > + movdqa xmm11,xmm15 > + pxor xmm4,xmm12 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm5,xmm13 > + movdqu XMMWORD[16+rsi],xmm3 > + movdqu XMMWORD[32+rsi],xmm4 > + movdqu XMMWORD[48+rsi],xmm5 > + lea rsi,[64+rsi] > + jmp NEAR $L$xts_dec_done > + > +ALIGN 16 > +$L$xts_dec_done: > + and r9,15 > + jz NEAR $L$xts_dec_ret > +$L$xts_dec_done2: > + mov rdx,r9 > + mov rcx,rbp > + mov eax,r10d > + > + movups xmm2,XMMWORD[rdi] > + xorps xmm2,xmm11 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_13: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_13 > +DB 102,15,56,223,209 > + xorps xmm2,xmm11 > + movups XMMWORD[rsi],xmm2 > + > +$L$xts_dec_steal: > + movzx eax,BYTE[16+rdi] > + movzx ecx,BYTE[rsi] > + lea rdi,[1+rdi] > + mov BYTE[rsi],al > + mov BYTE[16+rsi],cl > + lea rsi,[1+rsi] > + sub rdx,1 > + jnz NEAR $L$xts_dec_steal > + > + sub rsi,r9 > + mov rcx,rbp > + mov eax,r10d > + > + movups xmm2,XMMWORD[rsi] > + xorps xmm2,xmm10 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_14: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_14 > +DB 102,15,56,223,209 > + xorps xmm2,xmm10 > + movups XMMWORD[rsi],xmm2 > + > +$L$xts_dec_ret: > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + movaps xmm6,XMMWORD[((-168))+r11] > + movaps XMMWORD[(-168)+r11],xmm0 > + movaps xmm7,XMMWORD[((-152))+r11] > + movaps XMMWORD[(-152)+r11],xmm0 > + movaps xmm8,XMMWORD[((-136))+r11] > + movaps XMMWORD[(-136)+r11],xmm0 > + movaps xmm9,XMMWORD[((-120))+r11] > + movaps XMMWORD[(-120)+r11],xmm0 > + movaps xmm10,XMMWORD[((-104))+r11] > + movaps XMMWORD[(-104)+r11],xmm0 > + movaps xmm11,XMMWORD[((-88))+r11] > + movaps XMMWORD[(-88)+r11],xmm0 > + movaps xmm12,XMMWORD[((-72))+r11] > + movaps XMMWORD[(-72)+r11],xmm0 > + movaps xmm13,XMMWORD[((-56))+r11] > + movaps XMMWORD[(-56)+r11],xmm0 > + movaps xmm14,XMMWORD[((-40))+r11] > + movaps XMMWORD[(-40)+r11],xmm0 > + movaps xmm15,XMMWORD[((-24))+r11] > + movaps XMMWORD[(-24)+r11],xmm0 > + movaps XMMWORD[rsp],xmm0 > + movaps XMMWORD[16+rsp],xmm0 > + movaps XMMWORD[32+rsp],xmm0 > + movaps XMMWORD[48+rsp],xmm0 > + movaps XMMWORD[64+rsp],xmm0 > + movaps XMMWORD[80+rsp],xmm0 > + movaps XMMWORD[96+rsp],xmm0 > + mov rbp,QWORD[((-8))+r11] > + > + lea rsp,[r11] > + > +$L$xts_dec_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_xts_decrypt: > +global aesni_ocb_encrypt > + > +ALIGN 32 > +aesni_ocb_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ocb_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea rax,[rsp] > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + lea rsp,[((-160))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[64+rsp],xmm10 > + movaps XMMWORD[80+rsp],xmm11 > + movaps XMMWORD[96+rsp],xmm12 > + movaps XMMWORD[112+rsp],xmm13 > + movaps XMMWORD[128+rsp],xmm14 > + movaps XMMWORD[144+rsp],xmm15 > +$L$ocb_enc_body: > + mov rbx,QWORD[56+rax] > + mov rbp,QWORD[((56+8))+rax] > + > + mov r10d,DWORD[240+rcx] > + mov r11,rcx > + shl r10d,4 > + movups xmm9,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+r10*1+rcx] > + > + movdqu xmm15,XMMWORD[r9] > + pxor xmm9,xmm1 > + pxor xmm15,xmm1 > + > + mov eax,16+32 > + lea rcx,[32+r10*1+r11] > + movups xmm1,XMMWORD[16+r11] > + sub rax,r10 > + mov r10,rax > + > + movdqu xmm10,XMMWORD[rbx] > + movdqu xmm8,XMMWORD[rbp] > + > + test r8,1 > + jnz NEAR $L$ocb_enc_odd > + > + bsf r12,r8 > + add r8,1 > + shl r12,4 > + movdqu xmm7,XMMWORD[r12*1+rbx] > + movdqu xmm2,XMMWORD[rdi] > + lea rdi,[16+rdi] > + > + call __ocb_encrypt1 > + > + movdqa xmm15,xmm7 > + movups XMMWORD[rsi],xmm2 > + lea rsi,[16+rsi] > + sub rdx,1 > + jz NEAR $L$ocb_enc_done > + > +$L$ocb_enc_odd: > + lea r12,[1+r8] > + lea r13,[3+r8] > + lea r14,[5+r8] > + lea r8,[6+r8] > + bsf r12,r12 > + bsf r13,r13 > + bsf r14,r14 > + shl r12,4 > + shl r13,4 > + shl r14,4 > + > + sub rdx,6 > + jc NEAR $L$ocb_enc_short > + jmp NEAR $L$ocb_enc_grandloop > + > +ALIGN 32 > +$L$ocb_enc_grandloop: > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + movdqu xmm5,XMMWORD[48+rdi] > + movdqu xmm6,XMMWORD[64+rdi] > + movdqu xmm7,XMMWORD[80+rdi] > + lea rdi,[96+rdi] > + > + call __ocb_encrypt6 > + > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + movups XMMWORD[80+rsi],xmm7 > + lea rsi,[96+rsi] > + sub rdx,6 > + jnc NEAR $L$ocb_enc_grandloop > + > +$L$ocb_enc_short: > + add rdx,6 > + jz NEAR $L$ocb_enc_done > + > + movdqu xmm2,XMMWORD[rdi] > + cmp rdx,2 > + jb NEAR $L$ocb_enc_one > + movdqu xmm3,XMMWORD[16+rdi] > + je NEAR $L$ocb_enc_two > + > + movdqu xmm4,XMMWORD[32+rdi] > + cmp rdx,4 > + jb NEAR $L$ocb_enc_three > + movdqu xmm5,XMMWORD[48+rdi] > + je NEAR $L$ocb_enc_four > + > + movdqu xmm6,XMMWORD[64+rdi] > + pxor xmm7,xmm7 > + > + call __ocb_encrypt6 > + > + movdqa xmm15,xmm14 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + movups XMMWORD[64+rsi],xmm6 > + > + jmp NEAR $L$ocb_enc_done > + > +ALIGN 16 > +$L$ocb_enc_one: > + movdqa xmm7,xmm10 > + > + call __ocb_encrypt1 > + > + movdqa xmm15,xmm7 > + movups XMMWORD[rsi],xmm2 > + jmp NEAR $L$ocb_enc_done > + > +ALIGN 16 > +$L$ocb_enc_two: > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + > + call __ocb_encrypt4 > + > + movdqa xmm15,xmm11 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + > + jmp NEAR $L$ocb_enc_done > + > +ALIGN 16 > +$L$ocb_enc_three: > + pxor xmm5,xmm5 > + > + call __ocb_encrypt4 > + > + movdqa xmm15,xmm12 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + > + jmp NEAR $L$ocb_enc_done > + > +ALIGN 16 > +$L$ocb_enc_four: > + call __ocb_encrypt4 > + > + movdqa xmm15,xmm13 > + movups XMMWORD[rsi],xmm2 > + movups XMMWORD[16+rsi],xmm3 > + movups XMMWORD[32+rsi],xmm4 > + movups XMMWORD[48+rsi],xmm5 > + > +$L$ocb_enc_done: > + pxor xmm15,xmm0 > + movdqu XMMWORD[rbp],xmm8 > + movdqu XMMWORD[r9],xmm15 > + > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + movaps xmm6,XMMWORD[rsp] > + movaps XMMWORD[rsp],xmm0 > + movaps xmm7,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm8,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm9,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + movaps xmm10,XMMWORD[64+rsp] > + movaps XMMWORD[64+rsp],xmm0 > + movaps xmm11,XMMWORD[80+rsp] > + movaps XMMWORD[80+rsp],xmm0 > + movaps xmm12,XMMWORD[96+rsp] > + movaps XMMWORD[96+rsp],xmm0 > + movaps xmm13,XMMWORD[112+rsp] > + movaps XMMWORD[112+rsp],xmm0 > + movaps xmm14,XMMWORD[128+rsp] > + movaps XMMWORD[128+rsp],xmm0 > + movaps xmm15,XMMWORD[144+rsp] > + movaps XMMWORD[144+rsp],xmm0 > + lea rax,[((160+40))+rsp] > +$L$ocb_enc_pop: > + mov r14,QWORD[((-40))+rax] > + > + mov r13,QWORD[((-32))+rax] > + > + mov r12,QWORD[((-24))+rax] > + > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$ocb_enc_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ocb_encrypt: > + > + > +ALIGN 32 > +__ocb_encrypt6: > + > + pxor xmm15,xmm9 > + movdqu xmm11,XMMWORD[r12*1+rbx] > + movdqa xmm12,xmm10 > + movdqu xmm13,XMMWORD[r13*1+rbx] > + movdqa xmm14,xmm10 > + pxor xmm10,xmm15 > + movdqu xmm15,XMMWORD[r14*1+rbx] > + pxor xmm11,xmm10 > + pxor xmm8,xmm2 > + pxor xmm2,xmm10 > + pxor xmm12,xmm11 > + pxor xmm8,xmm3 > + pxor xmm3,xmm11 > + pxor xmm13,xmm12 > + pxor xmm8,xmm4 > + pxor xmm4,xmm12 > + pxor xmm14,xmm13 > + pxor xmm8,xmm5 > + pxor xmm5,xmm13 > + pxor xmm15,xmm14 > + pxor xmm8,xmm6 > + pxor xmm6,xmm14 > + pxor xmm8,xmm7 > + pxor xmm7,xmm15 > + movups xmm0,XMMWORD[32+r11] > + > + lea r12,[1+r8] > + lea r13,[3+r8] > + lea r14,[5+r8] > + add r8,6 > + pxor xmm10,xmm9 > + bsf r12,r12 > + bsf r13,r13 > + bsf r14,r14 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + pxor xmm11,xmm9 > + pxor xmm12,xmm9 > +DB 102,15,56,220,241 > + pxor xmm13,xmm9 > + pxor xmm14,xmm9 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[48+r11] > + pxor xmm15,xmm9 > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[64+r11] > + shl r12,4 > + shl r13,4 > + jmp NEAR $L$ocb_enc_loop6 > + > +ALIGN 32 > +$L$ocb_enc_loop6: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > +DB 102,15,56,220,240 > +DB 102,15,56,220,248 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_enc_loop6 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > +DB 102,15,56,220,241 > +DB 102,15,56,220,249 > + movups xmm1,XMMWORD[16+r11] > + shl r14,4 > + > +DB 102,65,15,56,221,210 > + movdqu xmm10,XMMWORD[rbx] > + mov rax,r10 > +DB 102,65,15,56,221,219 > +DB 102,65,15,56,221,228 > +DB 102,65,15,56,221,237 > +DB 102,65,15,56,221,246 > +DB 102,65,15,56,221,255 > + DB 0F3h,0C3h ;repret > + > + > + > + > +ALIGN 32 > +__ocb_encrypt4: > + > + pxor xmm15,xmm9 > + movdqu xmm11,XMMWORD[r12*1+rbx] > + movdqa xmm12,xmm10 > + movdqu xmm13,XMMWORD[r13*1+rbx] > + pxor xmm10,xmm15 > + pxor xmm11,xmm10 > + pxor xmm8,xmm2 > + pxor xmm2,xmm10 > + pxor xmm12,xmm11 > + pxor xmm8,xmm3 > + pxor xmm3,xmm11 > + pxor xmm13,xmm12 > + pxor xmm8,xmm4 > + pxor xmm4,xmm12 > + pxor xmm8,xmm5 > + pxor xmm5,xmm13 > + movups xmm0,XMMWORD[32+r11] > + > + pxor xmm10,xmm9 > + pxor xmm11,xmm9 > + pxor xmm12,xmm9 > + pxor xmm13,xmm9 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[48+r11] > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[64+r11] > + jmp NEAR $L$ocb_enc_loop4 > + > +ALIGN 32 > +$L$ocb_enc_loop4: > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,220,208 > +DB 102,15,56,220,216 > +DB 102,15,56,220,224 > +DB 102,15,56,220,232 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_enc_loop4 > + > +DB 102,15,56,220,209 > +DB 102,15,56,220,217 > +DB 102,15,56,220,225 > +DB 102,15,56,220,233 > + movups xmm1,XMMWORD[16+r11] > + mov rax,r10 > + > +DB 102,65,15,56,221,210 > +DB 102,65,15,56,221,219 > +DB 102,65,15,56,221,228 > +DB 102,65,15,56,221,237 > + DB 0F3h,0C3h ;repret > + > + > + > + > +ALIGN 32 > +__ocb_encrypt1: > + > + pxor xmm7,xmm15 > + pxor xmm7,xmm9 > + pxor xmm8,xmm2 > + pxor xmm2,xmm7 > + movups xmm0,XMMWORD[32+r11] > + > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[48+r11] > + pxor xmm7,xmm9 > + > +DB 102,15,56,220,208 > + movups xmm0,XMMWORD[64+r11] > + jmp NEAR $L$ocb_enc_loop1 > + > +ALIGN 32 > +$L$ocb_enc_loop1: > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,220,208 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_enc_loop1 > + > +DB 102,15,56,220,209 > + movups xmm1,XMMWORD[16+r11] > + mov rax,r10 > + > +DB 102,15,56,221,215 > + DB 0F3h,0C3h ;repret > + > + > + > +global aesni_ocb_decrypt > + > +ALIGN 32 > +aesni_ocb_decrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_ocb_decrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + lea rax,[rsp] > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + lea rsp,[((-160))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[64+rsp],xmm10 > + movaps XMMWORD[80+rsp],xmm11 > + movaps XMMWORD[96+rsp],xmm12 > + movaps XMMWORD[112+rsp],xmm13 > + movaps XMMWORD[128+rsp],xmm14 > + movaps XMMWORD[144+rsp],xmm15 > +$L$ocb_dec_body: > + mov rbx,QWORD[56+rax] > + mov rbp,QWORD[((56+8))+rax] > + > + mov r10d,DWORD[240+rcx] > + mov r11,rcx > + shl r10d,4 > + movups xmm9,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+r10*1+rcx] > + > + movdqu xmm15,XMMWORD[r9] > + pxor xmm9,xmm1 > + pxor xmm15,xmm1 > + > + mov eax,16+32 > + lea rcx,[32+r10*1+r11] > + movups xmm1,XMMWORD[16+r11] > + sub rax,r10 > + mov r10,rax > + > + movdqu xmm10,XMMWORD[rbx] > + movdqu xmm8,XMMWORD[rbp] > + > + test r8,1 > + jnz NEAR $L$ocb_dec_odd > + > + bsf r12,r8 > + add r8,1 > + shl r12,4 > + movdqu xmm7,XMMWORD[r12*1+rbx] > + movdqu xmm2,XMMWORD[rdi] > + lea rdi,[16+rdi] > + > + call __ocb_decrypt1 > + > + movdqa xmm15,xmm7 > + movups XMMWORD[rsi],xmm2 > + xorps xmm8,xmm2 > + lea rsi,[16+rsi] > + sub rdx,1 > + jz NEAR $L$ocb_dec_done > + > +$L$ocb_dec_odd: > + lea r12,[1+r8] > + lea r13,[3+r8] > + lea r14,[5+r8] > + lea r8,[6+r8] > + bsf r12,r12 > + bsf r13,r13 > + bsf r14,r14 > + shl r12,4 > + shl r13,4 > + shl r14,4 > + > + sub rdx,6 > + jc NEAR $L$ocb_dec_short > + jmp NEAR $L$ocb_dec_grandloop > + > +ALIGN 32 > +$L$ocb_dec_grandloop: > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqu xmm4,XMMWORD[32+rdi] > + movdqu xmm5,XMMWORD[48+rdi] > + movdqu xmm6,XMMWORD[64+rdi] > + movdqu xmm7,XMMWORD[80+rdi] > + lea rdi,[96+rdi] > + > + call __ocb_decrypt6 > + > + movups XMMWORD[rsi],xmm2 > + pxor xmm8,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm8,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm8,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm8,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm8,xmm6 > + movups XMMWORD[80+rsi],xmm7 > + pxor xmm8,xmm7 > + lea rsi,[96+rsi] > + sub rdx,6 > + jnc NEAR $L$ocb_dec_grandloop > + > +$L$ocb_dec_short: > + add rdx,6 > + jz NEAR $L$ocb_dec_done > + > + movdqu xmm2,XMMWORD[rdi] > + cmp rdx,2 > + jb NEAR $L$ocb_dec_one > + movdqu xmm3,XMMWORD[16+rdi] > + je NEAR $L$ocb_dec_two > + > + movdqu xmm4,XMMWORD[32+rdi] > + cmp rdx,4 > + jb NEAR $L$ocb_dec_three > + movdqu xmm5,XMMWORD[48+rdi] > + je NEAR $L$ocb_dec_four > + > + movdqu xmm6,XMMWORD[64+rdi] > + pxor xmm7,xmm7 > + > + call __ocb_decrypt6 > + > + movdqa xmm15,xmm14 > + movups XMMWORD[rsi],xmm2 > + pxor xmm8,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm8,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm8,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm8,xmm5 > + movups XMMWORD[64+rsi],xmm6 > + pxor xmm8,xmm6 > + > + jmp NEAR $L$ocb_dec_done > + > +ALIGN 16 > +$L$ocb_dec_one: > + movdqa xmm7,xmm10 > + > + call __ocb_decrypt1 > + > + movdqa xmm15,xmm7 > + movups XMMWORD[rsi],xmm2 > + xorps xmm8,xmm2 > + jmp NEAR $L$ocb_dec_done > + > +ALIGN 16 > +$L$ocb_dec_two: > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + > + call __ocb_decrypt4 > + > + movdqa xmm15,xmm11 > + movups XMMWORD[rsi],xmm2 > + xorps xmm8,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + xorps xmm8,xmm3 > + > + jmp NEAR $L$ocb_dec_done > + > +ALIGN 16 > +$L$ocb_dec_three: > + pxor xmm5,xmm5 > + > + call __ocb_decrypt4 > + > + movdqa xmm15,xmm12 > + movups XMMWORD[rsi],xmm2 > + xorps xmm8,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + xorps xmm8,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + xorps xmm8,xmm4 > + > + jmp NEAR $L$ocb_dec_done > + > +ALIGN 16 > +$L$ocb_dec_four: > + call __ocb_decrypt4 > + > + movdqa xmm15,xmm13 > + movups XMMWORD[rsi],xmm2 > + pxor xmm8,xmm2 > + movups XMMWORD[16+rsi],xmm3 > + pxor xmm8,xmm3 > + movups XMMWORD[32+rsi],xmm4 > + pxor xmm8,xmm4 > + movups XMMWORD[48+rsi],xmm5 > + pxor xmm8,xmm5 > + > +$L$ocb_dec_done: > + pxor xmm15,xmm0 > + movdqu XMMWORD[rbp],xmm8 > + movdqu XMMWORD[r9],xmm15 > + > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + movaps xmm6,XMMWORD[rsp] > + movaps XMMWORD[rsp],xmm0 > + movaps xmm7,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm8,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm9,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + movaps xmm10,XMMWORD[64+rsp] > + movaps XMMWORD[64+rsp],xmm0 > + movaps xmm11,XMMWORD[80+rsp] > + movaps XMMWORD[80+rsp],xmm0 > + movaps xmm12,XMMWORD[96+rsp] > + movaps XMMWORD[96+rsp],xmm0 > + movaps xmm13,XMMWORD[112+rsp] > + movaps XMMWORD[112+rsp],xmm0 > + movaps xmm14,XMMWORD[128+rsp] > + movaps XMMWORD[128+rsp],xmm0 > + movaps xmm15,XMMWORD[144+rsp] > + movaps XMMWORD[144+rsp],xmm0 > + lea rax,[((160+40))+rsp] > +$L$ocb_dec_pop: > + mov r14,QWORD[((-40))+rax] > + > + mov r13,QWORD[((-32))+rax] > + > + mov r12,QWORD[((-24))+rax] > + > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$ocb_dec_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_ocb_decrypt: > + > + > +ALIGN 32 > +__ocb_decrypt6: > + > + pxor xmm15,xmm9 > + movdqu xmm11,XMMWORD[r12*1+rbx] > + movdqa xmm12,xmm10 > + movdqu xmm13,XMMWORD[r13*1+rbx] > + movdqa xmm14,xmm10 > + pxor xmm10,xmm15 > + movdqu xmm15,XMMWORD[r14*1+rbx] > + pxor xmm11,xmm10 > + pxor xmm2,xmm10 > + pxor xmm12,xmm11 > + pxor xmm3,xmm11 > + pxor xmm13,xmm12 > + pxor xmm4,xmm12 > + pxor xmm14,xmm13 > + pxor xmm5,xmm13 > + pxor xmm15,xmm14 > + pxor xmm6,xmm14 > + pxor xmm7,xmm15 > + movups xmm0,XMMWORD[32+r11] > + > + lea r12,[1+r8] > + lea r13,[3+r8] > + lea r14,[5+r8] > + add r8,6 > + pxor xmm10,xmm9 > + bsf r12,r12 > + bsf r13,r13 > + bsf r14,r14 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + pxor xmm11,xmm9 > + pxor xmm12,xmm9 > +DB 102,15,56,222,241 > + pxor xmm13,xmm9 > + pxor xmm14,xmm9 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[48+r11] > + pxor xmm15,xmm9 > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[64+r11] > + shl r12,4 > + shl r13,4 > + jmp NEAR $L$ocb_dec_loop6 > + > +ALIGN 32 > +$L$ocb_dec_loop6: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_dec_loop6 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + movups xmm1,XMMWORD[16+r11] > + shl r14,4 > + > +DB 102,65,15,56,223,210 > + movdqu xmm10,XMMWORD[rbx] > + mov rax,r10 > +DB 102,65,15,56,223,219 > +DB 102,65,15,56,223,228 > +DB 102,65,15,56,223,237 > +DB 102,65,15,56,223,246 > +DB 102,65,15,56,223,255 > + DB 0F3h,0C3h ;repret > + > + > + > + > +ALIGN 32 > +__ocb_decrypt4: > + > + pxor xmm15,xmm9 > + movdqu xmm11,XMMWORD[r12*1+rbx] > + movdqa xmm12,xmm10 > + movdqu xmm13,XMMWORD[r13*1+rbx] > + pxor xmm10,xmm15 > + pxor xmm11,xmm10 > + pxor xmm2,xmm10 > + pxor xmm12,xmm11 > + pxor xmm3,xmm11 > + pxor xmm13,xmm12 > + pxor xmm4,xmm12 > + pxor xmm5,xmm13 > + movups xmm0,XMMWORD[32+r11] > + > + pxor xmm10,xmm9 > + pxor xmm11,xmm9 > + pxor xmm12,xmm9 > + pxor xmm13,xmm9 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[48+r11] > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[64+r11] > + jmp NEAR $L$ocb_dec_loop4 > + > +ALIGN 32 > +$L$ocb_dec_loop4: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_dec_loop4 > + > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + movups xmm1,XMMWORD[16+r11] > + mov rax,r10 > + > +DB 102,65,15,56,223,210 > +DB 102,65,15,56,223,219 > +DB 102,65,15,56,223,228 > +DB 102,65,15,56,223,237 > + DB 0F3h,0C3h ;repret > + > + > + > + > +ALIGN 32 > +__ocb_decrypt1: > + > + pxor xmm7,xmm15 > + pxor xmm7,xmm9 > + pxor xmm2,xmm7 > + movups xmm0,XMMWORD[32+r11] > + > +DB 102,15,56,222,209 > + movups xmm1,XMMWORD[48+r11] > + pxor xmm7,xmm9 > + > +DB 102,15,56,222,208 > + movups xmm0,XMMWORD[64+r11] > + jmp NEAR $L$ocb_dec_loop1 > + > +ALIGN 32 > +$L$ocb_dec_loop1: > +DB 102,15,56,222,209 > + movups xmm1,XMMWORD[rax*1+rcx] > + add rax,32 > + > +DB 102,15,56,222,208 > + movups xmm0,XMMWORD[((-16))+rax*1+rcx] > + jnz NEAR $L$ocb_dec_loop1 > + > +DB 102,15,56,222,209 > + movups xmm1,XMMWORD[16+r11] > + mov rax,r10 > + > +DB 102,15,56,223,215 > + DB 0F3h,0C3h ;repret > + > + > +global aesni_cbc_encrypt > + > +ALIGN 16 > +aesni_cbc_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_aesni_cbc_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + test rdx,rdx > + jz NEAR $L$cbc_ret > + > + mov r10d,DWORD[240+rcx] > + mov r11,rcx > + test r9d,r9d > + jz NEAR $L$cbc_decrypt > + > + movups xmm2,XMMWORD[r8] > + mov eax,r10d > + cmp rdx,16 > + jb NEAR $L$cbc_enc_tail > + sub rdx,16 > + jmp NEAR $L$cbc_enc_loop > +ALIGN 16 > +$L$cbc_enc_loop: > + movups xmm3,XMMWORD[rdi] > + lea rdi,[16+rdi] > + > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + xorps xmm3,xmm0 > + lea rcx,[32+rcx] > + xorps xmm2,xmm3 > +$L$oop_enc1_15: > +DB 102,15,56,220,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_enc1_15 > +DB 102,15,56,221,209 > + mov eax,r10d > + mov rcx,r11 > + movups XMMWORD[rsi],xmm2 > + lea rsi,[16+rsi] > + sub rdx,16 > + jnc NEAR $L$cbc_enc_loop > + add rdx,16 > + jnz NEAR $L$cbc_enc_tail > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + movups XMMWORD[r8],xmm2 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + jmp NEAR $L$cbc_ret > + > +$L$cbc_enc_tail: > + mov rcx,rdx > + xchg rsi,rdi > + DD 0x9066A4F3 > + mov ecx,16 > + sub rcx,rdx > + xor eax,eax > + DD 0x9066AAF3 > + lea rdi,[((-16))+rdi] > + mov eax,r10d > + mov rsi,rdi > + mov rcx,r11 > + xor rdx,rdx > + jmp NEAR $L$cbc_enc_loop > + > +ALIGN 16 > +$L$cbc_decrypt: > + cmp rdx,16 > + jne NEAR $L$cbc_decrypt_bulk > + > + > + > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[r8] > + movdqa xmm4,xmm2 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_16: > +DB 102,15,56,222,209 > + dec r10d > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_16 > +DB 102,15,56,223,209 > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + movdqu XMMWORD[r8],xmm4 > + xorps xmm2,xmm3 > + pxor xmm3,xmm3 > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + jmp NEAR $L$cbc_ret > +ALIGN 16 > +$L$cbc_decrypt_bulk: > + lea r11,[rsp] > + > + push rbp > + > + sub rsp,176 > + and rsp,-16 > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$cbc_decrypt_body: > + mov rbp,rcx > + movups xmm10,XMMWORD[r8] > + mov eax,r10d > + cmp rdx,0x50 > + jbe NEAR $L$cbc_dec_tail > + > + movups xmm0,XMMWORD[rcx] > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqa xmm11,xmm2 > + movdqu xmm4,XMMWORD[32+rdi] > + movdqa xmm12,xmm3 > + movdqu xmm5,XMMWORD[48+rdi] > + movdqa xmm13,xmm4 > + movdqu xmm6,XMMWORD[64+rdi] > + movdqa xmm14,xmm5 > + movdqu xmm7,XMMWORD[80+rdi] > + movdqa xmm15,xmm6 > + mov r9d,DWORD[((OPENSSL_ia32cap_P+4))] > + cmp rdx,0x70 > + jbe NEAR $L$cbc_dec_six_or_seven > + > + and r9d,71303168 > + sub rdx,0x50 > + cmp r9d,4194304 > + je NEAR $L$cbc_dec_loop6_enter > + sub rdx,0x20 > + lea rcx,[112+rcx] > + jmp NEAR $L$cbc_dec_loop8_enter > +ALIGN 16 > +$L$cbc_dec_loop8: > + movups XMMWORD[rsi],xmm9 > + lea rsi,[16+rsi] > +$L$cbc_dec_loop8_enter: > + movdqu xmm8,XMMWORD[96+rdi] > + pxor xmm2,xmm0 > + movdqu xmm9,XMMWORD[112+rdi] > + pxor xmm3,xmm0 > + movups xmm1,XMMWORD[((16-112))+rcx] > + pxor xmm4,xmm0 > + mov rbp,-1 > + cmp rdx,0x70 > + pxor xmm5,xmm0 > + pxor xmm6,xmm0 > + pxor xmm7,xmm0 > + pxor xmm8,xmm0 > + > +DB 102,15,56,222,209 > + pxor xmm9,xmm0 > + movups xmm0,XMMWORD[((32-112))+rcx] > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > + adc rbp,0 > + and rbp,128 > +DB 102,68,15,56,222,201 > + add rbp,rdi > + movups xmm1,XMMWORD[((48-112))+rcx] > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((64-112))+rcx] > + nop > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movups xmm1,XMMWORD[((80-112))+rcx] > + nop > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((96-112))+rcx] > + nop > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movups xmm1,XMMWORD[((112-112))+rcx] > + nop > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((128-112))+rcx] > + nop > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movups xmm1,XMMWORD[((144-112))+rcx] > + cmp eax,11 > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((160-112))+rcx] > + jb NEAR $L$cbc_dec_done > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movups xmm1,XMMWORD[((176-112))+rcx] > + nop > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((192-112))+rcx] > + je NEAR $L$cbc_dec_done > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movups xmm1,XMMWORD[((208-112))+rcx] > + nop > +DB 102,15,56,222,208 > +DB 102,15,56,222,216 > +DB 102,15,56,222,224 > +DB 102,15,56,222,232 > +DB 102,15,56,222,240 > +DB 102,15,56,222,248 > +DB 102,68,15,56,222,192 > +DB 102,68,15,56,222,200 > + movups xmm0,XMMWORD[((224-112))+rcx] > + jmp NEAR $L$cbc_dec_done > +ALIGN 16 > +$L$cbc_dec_done: > +DB 102,15,56,222,209 > +DB 102,15,56,222,217 > + pxor xmm10,xmm0 > + pxor xmm11,xmm0 > +DB 102,15,56,222,225 > +DB 102,15,56,222,233 > + pxor xmm12,xmm0 > + pxor xmm13,xmm0 > +DB 102,15,56,222,241 > +DB 102,15,56,222,249 > + pxor xmm14,xmm0 > + pxor xmm15,xmm0 > +DB 102,68,15,56,222,193 > +DB 102,68,15,56,222,201 > + movdqu xmm1,XMMWORD[80+rdi] > + > +DB 102,65,15,56,223,210 > + movdqu xmm10,XMMWORD[96+rdi] > + pxor xmm1,xmm0 > +DB 102,65,15,56,223,219 > + pxor xmm10,xmm0 > + movdqu xmm0,XMMWORD[112+rdi] > +DB 102,65,15,56,223,228 > + lea rdi,[128+rdi] > + movdqu xmm11,XMMWORD[rbp] > +DB 102,65,15,56,223,237 > +DB 102,65,15,56,223,246 > + movdqu xmm12,XMMWORD[16+rbp] > + movdqu xmm13,XMMWORD[32+rbp] > +DB 102,65,15,56,223,255 > +DB 102,68,15,56,223,193 > + movdqu xmm14,XMMWORD[48+rbp] > + movdqu xmm15,XMMWORD[64+rbp] > +DB 102,69,15,56,223,202 > + movdqa xmm10,xmm0 > + movdqu xmm1,XMMWORD[80+rbp] > + movups xmm0,XMMWORD[((-112))+rcx] > + > + movups XMMWORD[rsi],xmm2 > + movdqa xmm2,xmm11 > + movups XMMWORD[16+rsi],xmm3 > + movdqa xmm3,xmm12 > + movups XMMWORD[32+rsi],xmm4 > + movdqa xmm4,xmm13 > + movups XMMWORD[48+rsi],xmm5 > + movdqa xmm5,xmm14 > + movups XMMWORD[64+rsi],xmm6 > + movdqa xmm6,xmm15 > + movups XMMWORD[80+rsi],xmm7 > + movdqa xmm7,xmm1 > + movups XMMWORD[96+rsi],xmm8 > + lea rsi,[112+rsi] > + > + sub rdx,0x80 > + ja NEAR $L$cbc_dec_loop8 > + > + movaps xmm2,xmm9 > + lea rcx,[((-112))+rcx] > + add rdx,0x70 > + jle NEAR $L$cbc_dec_clear_tail_collected > + movups XMMWORD[rsi],xmm9 > + lea rsi,[16+rsi] > + cmp rdx,0x50 > + jbe NEAR $L$cbc_dec_tail > + > + movaps xmm2,xmm11 > +$L$cbc_dec_six_or_seven: > + cmp rdx,0x60 > + ja NEAR $L$cbc_dec_seven > + > + movaps xmm8,xmm7 > + call _aesni_decrypt6 > + pxor xmm2,xmm10 > + movaps xmm10,xmm8 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + pxor xmm6,xmm14 > + movdqu XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + pxor xmm7,xmm15 > + movdqu XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + lea rsi,[80+rsi] > + movdqa xmm2,xmm7 > + pxor xmm7,xmm7 > + jmp NEAR $L$cbc_dec_tail_collected > + > +ALIGN 16 > +$L$cbc_dec_seven: > + movups xmm8,XMMWORD[96+rdi] > + xorps xmm9,xmm9 > + call _aesni_decrypt8 > + movups xmm9,XMMWORD[80+rdi] > + pxor xmm2,xmm10 > + movups xmm10,XMMWORD[96+rdi] > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + pxor xmm6,xmm14 > + movdqu XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + pxor xmm7,xmm15 > + movdqu XMMWORD[64+rsi],xmm6 > + pxor xmm6,xmm6 > + pxor xmm8,xmm9 > + movdqu XMMWORD[80+rsi],xmm7 > + pxor xmm7,xmm7 > + lea rsi,[96+rsi] > + movdqa xmm2,xmm8 > + pxor xmm8,xmm8 > + pxor xmm9,xmm9 > + jmp NEAR $L$cbc_dec_tail_collected > + > +ALIGN 16 > +$L$cbc_dec_loop6: > + movups XMMWORD[rsi],xmm7 > + lea rsi,[16+rsi] > + movdqu xmm2,XMMWORD[rdi] > + movdqu xmm3,XMMWORD[16+rdi] > + movdqa xmm11,xmm2 > + movdqu xmm4,XMMWORD[32+rdi] > + movdqa xmm12,xmm3 > + movdqu xmm5,XMMWORD[48+rdi] > + movdqa xmm13,xmm4 > + movdqu xmm6,XMMWORD[64+rdi] > + movdqa xmm14,xmm5 > + movdqu xmm7,XMMWORD[80+rdi] > + movdqa xmm15,xmm6 > +$L$cbc_dec_loop6_enter: > + lea rdi,[96+rdi] > + movdqa xmm8,xmm7 > + > + call _aesni_decrypt6 > + > + pxor xmm2,xmm10 > + movdqa xmm10,xmm8 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm6,xmm14 > + mov rcx,rbp > + movdqu XMMWORD[48+rsi],xmm5 > + pxor xmm7,xmm15 > + mov eax,r10d > + movdqu XMMWORD[64+rsi],xmm6 > + lea rsi,[80+rsi] > + sub rdx,0x60 > + ja NEAR $L$cbc_dec_loop6 > + > + movdqa xmm2,xmm7 > + add rdx,0x50 > + jle NEAR $L$cbc_dec_clear_tail_collected > + movups XMMWORD[rsi],xmm7 > + lea rsi,[16+rsi] > + > +$L$cbc_dec_tail: > + movups xmm2,XMMWORD[rdi] > + sub rdx,0x10 > + jbe NEAR $L$cbc_dec_one > + > + movups xmm3,XMMWORD[16+rdi] > + movaps xmm11,xmm2 > + sub rdx,0x10 > + jbe NEAR $L$cbc_dec_two > + > + movups xmm4,XMMWORD[32+rdi] > + movaps xmm12,xmm3 > + sub rdx,0x10 > + jbe NEAR $L$cbc_dec_three > + > + movups xmm5,XMMWORD[48+rdi] > + movaps xmm13,xmm4 > + sub rdx,0x10 > + jbe NEAR $L$cbc_dec_four > + > + movups xmm6,XMMWORD[64+rdi] > + movaps xmm14,xmm5 > + movaps xmm15,xmm6 > + xorps xmm7,xmm7 > + call _aesni_decrypt6 > + pxor xmm2,xmm10 > + movaps xmm10,xmm15 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + pxor xmm6,xmm14 > + movdqu XMMWORD[48+rsi],xmm5 > + pxor xmm5,xmm5 > + lea rsi,[64+rsi] > + movdqa xmm2,xmm6 > + pxor xmm6,xmm6 > + pxor xmm7,xmm7 > + sub rdx,0x10 > + jmp NEAR $L$cbc_dec_tail_collected > + > +ALIGN 16 > +$L$cbc_dec_one: > + movaps xmm11,xmm2 > + movups xmm0,XMMWORD[rcx] > + movups xmm1,XMMWORD[16+rcx] > + lea rcx,[32+rcx] > + xorps xmm2,xmm0 > +$L$oop_dec1_17: > +DB 102,15,56,222,209 > + dec eax > + movups xmm1,XMMWORD[rcx] > + lea rcx,[16+rcx] > + jnz NEAR $L$oop_dec1_17 > +DB 102,15,56,223,209 > + xorps xmm2,xmm10 > + movaps xmm10,xmm11 > + jmp NEAR $L$cbc_dec_tail_collected > +ALIGN 16 > +$L$cbc_dec_two: > + movaps xmm12,xmm3 > + call _aesni_decrypt2 > + pxor xmm2,xmm10 > + movaps xmm10,xmm12 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + movdqa xmm2,xmm3 > + pxor xmm3,xmm3 > + lea rsi,[16+rsi] > + jmp NEAR $L$cbc_dec_tail_collected > +ALIGN 16 > +$L$cbc_dec_three: > + movaps xmm13,xmm4 > + call _aesni_decrypt3 > + pxor xmm2,xmm10 > + movaps xmm10,xmm13 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + movdqa xmm2,xmm4 > + pxor xmm4,xmm4 > + lea rsi,[32+rsi] > + jmp NEAR $L$cbc_dec_tail_collected > +ALIGN 16 > +$L$cbc_dec_four: > + movaps xmm14,xmm5 > + call _aesni_decrypt4 > + pxor xmm2,xmm10 > + movaps xmm10,xmm14 > + pxor xmm3,xmm11 > + movdqu XMMWORD[rsi],xmm2 > + pxor xmm4,xmm12 > + movdqu XMMWORD[16+rsi],xmm3 > + pxor xmm3,xmm3 > + pxor xmm5,xmm13 > + movdqu XMMWORD[32+rsi],xmm4 > + pxor xmm4,xmm4 > + movdqa xmm2,xmm5 > + pxor xmm5,xmm5 > + lea rsi,[48+rsi] > + jmp NEAR $L$cbc_dec_tail_collected > + > +ALIGN 16 > +$L$cbc_dec_clear_tail_collected: > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > +$L$cbc_dec_tail_collected: > + movups XMMWORD[r8],xmm10 > + and rdx,15 > + jnz NEAR $L$cbc_dec_tail_partial > + movups XMMWORD[rsi],xmm2 > + pxor xmm2,xmm2 > + jmp NEAR $L$cbc_dec_ret > +ALIGN 16 > +$L$cbc_dec_tail_partial: > + movaps XMMWORD[rsp],xmm2 > + pxor xmm2,xmm2 > + mov rcx,16 > + mov rdi,rsi > + sub rcx,rdx > + lea rsi,[rsp] > + DD 0x9066A4F3 > + movdqa XMMWORD[rsp],xmm2 > + > +$L$cbc_dec_ret: > + xorps xmm0,xmm0 > + pxor xmm1,xmm1 > + movaps xmm6,XMMWORD[16+rsp] > + movaps XMMWORD[16+rsp],xmm0 > + movaps xmm7,XMMWORD[32+rsp] > + movaps XMMWORD[32+rsp],xmm0 > + movaps xmm8,XMMWORD[48+rsp] > + movaps XMMWORD[48+rsp],xmm0 > + movaps xmm9,XMMWORD[64+rsp] > + movaps XMMWORD[64+rsp],xmm0 > + movaps xmm10,XMMWORD[80+rsp] > + movaps XMMWORD[80+rsp],xmm0 > + movaps xmm11,XMMWORD[96+rsp] > + movaps XMMWORD[96+rsp],xmm0 > + movaps xmm12,XMMWORD[112+rsp] > + movaps XMMWORD[112+rsp],xmm0 > + movaps xmm13,XMMWORD[128+rsp] > + movaps XMMWORD[128+rsp],xmm0 > + movaps xmm14,XMMWORD[144+rsp] > + movaps XMMWORD[144+rsp],xmm0 > + movaps xmm15,XMMWORD[160+rsp] > + movaps XMMWORD[160+rsp],xmm0 > + mov rbp,QWORD[((-8))+r11] > + > + lea rsp,[r11] > + > +$L$cbc_ret: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_aesni_cbc_encrypt: > +global aesni_set_decrypt_key > + > +ALIGN 16 > +aesni_set_decrypt_key: > + > +DB 0x48,0x83,0xEC,0x08 > + > + call __aesni_set_encrypt_key > + shl edx,4 > + test eax,eax > + jnz NEAR $L$dec_key_ret > + lea rcx,[16+rdx*1+r8] > + > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[rcx] > + movups XMMWORD[rcx],xmm0 > + movups XMMWORD[r8],xmm1 > + lea r8,[16+r8] > + lea rcx,[((-16))+rcx] > + > +$L$dec_key_inverse: > + movups xmm0,XMMWORD[r8] > + movups xmm1,XMMWORD[rcx] > +DB 102,15,56,219,192 > +DB 102,15,56,219,201 > + lea r8,[16+r8] > + lea rcx,[((-16))+rcx] > + movups XMMWORD[16+rcx],xmm0 > + movups XMMWORD[(-16)+r8],xmm1 > + cmp rcx,r8 > + ja NEAR $L$dec_key_inverse > + > + movups xmm0,XMMWORD[r8] > +DB 102,15,56,219,192 > + pxor xmm1,xmm1 > + movups XMMWORD[rcx],xmm0 > + pxor xmm0,xmm0 > +$L$dec_key_ret: > + add rsp,8 > + > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_set_decrypt_key: > + > +global aesni_set_encrypt_key > + > +ALIGN 16 > +aesni_set_encrypt_key: > +__aesni_set_encrypt_key: > + > +DB 0x48,0x83,0xEC,0x08 > + > + mov rax,-1 > + test rcx,rcx > + jz NEAR $L$enc_key_ret > + test r8,r8 > + jz NEAR $L$enc_key_ret > + > + mov r10d,268437504 > + movups xmm0,XMMWORD[rcx] > + xorps xmm4,xmm4 > + and r10d,DWORD[((OPENSSL_ia32cap_P+4))] > + lea rax,[16+r8] > + cmp edx,256 > + je NEAR $L$14rounds > + cmp edx,192 > + je NEAR $L$12rounds > + cmp edx,128 > + jne NEAR $L$bad_keybits > + > +$L$10rounds: > + mov edx,9 > + cmp r10d,268435456 > + je NEAR $L$10rounds_alt > + > + movups XMMWORD[r8],xmm0 > +DB 102,15,58,223,200,1 > + call $L$key_expansion_128_cold > +DB 102,15,58,223,200,2 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,4 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,8 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,16 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,32 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,64 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,128 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,27 > + call $L$key_expansion_128 > +DB 102,15,58,223,200,54 > + call $L$key_expansion_128 > + movups XMMWORD[rax],xmm0 > + mov DWORD[80+rax],edx > + xor eax,eax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$10rounds_alt: > + movdqa xmm5,XMMWORD[$L$key_rotate] > + mov r10d,8 > + movdqa xmm4,XMMWORD[$L$key_rcon1] > + movdqa xmm2,xmm0 > + movdqu XMMWORD[r8],xmm0 > + jmp NEAR $L$oop_key128 > + > +ALIGN 16 > +$L$oop_key128: > +DB 102,15,56,0,197 > +DB 102,15,56,221,196 > + pslld xmm4,1 > + lea rax,[16+rax] > + > + movdqa xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm2,xmm3 > + > + pxor xmm0,xmm2 > + movdqu XMMWORD[(-16)+rax],xmm0 > + movdqa xmm2,xmm0 > + > + dec r10d > + jnz NEAR $L$oop_key128 > + > + movdqa xmm4,XMMWORD[$L$key_rcon1b] > + > +DB 102,15,56,0,197 > +DB 102,15,56,221,196 > + pslld xmm4,1 > + > + movdqa xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm2,xmm3 > + > + pxor xmm0,xmm2 > + movdqu XMMWORD[rax],xmm0 > + > + movdqa xmm2,xmm0 > +DB 102,15,56,0,197 > +DB 102,15,56,221,196 > + > + movdqa xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm3,xmm2 > + pslldq xmm2,4 > + pxor xmm2,xmm3 > + > + pxor xmm0,xmm2 > + movdqu XMMWORD[16+rax],xmm0 > + > + mov DWORD[96+rax],edx > + xor eax,eax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$12rounds: > + movq xmm2,QWORD[16+rcx] > + mov edx,11 > + cmp r10d,268435456 > + je NEAR $L$12rounds_alt > + > + movups XMMWORD[r8],xmm0 > +DB 102,15,58,223,202,1 > + call $L$key_expansion_192a_cold > +DB 102,15,58,223,202,2 > + call $L$key_expansion_192b > +DB 102,15,58,223,202,4 > + call $L$key_expansion_192a > +DB 102,15,58,223,202,8 > + call $L$key_expansion_192b > +DB 102,15,58,223,202,16 > + call $L$key_expansion_192a > +DB 102,15,58,223,202,32 > + call $L$key_expansion_192b > +DB 102,15,58,223,202,64 > + call $L$key_expansion_192a > +DB 102,15,58,223,202,128 > + call $L$key_expansion_192b > + movups XMMWORD[rax],xmm0 > + mov DWORD[48+rax],edx > + xor rax,rax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$12rounds_alt: > + movdqa xmm5,XMMWORD[$L$key_rotate192] > + movdqa xmm4,XMMWORD[$L$key_rcon1] > + mov r10d,8 > + movdqu XMMWORD[r8],xmm0 > + jmp NEAR $L$oop_key192 > + > +ALIGN 16 > +$L$oop_key192: > + movq QWORD[rax],xmm2 > + movdqa xmm1,xmm2 > +DB 102,15,56,0,213 > +DB 102,15,56,221,212 > + pslld xmm4,1 > + lea rax,[24+rax] > + > + movdqa xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm0,xmm3 > + > + pshufd xmm3,xmm0,0xff > + pxor xmm3,xmm1 > + pslldq xmm1,4 > + pxor xmm3,xmm1 > + > + pxor xmm0,xmm2 > + pxor xmm2,xmm3 > + movdqu XMMWORD[(-16)+rax],xmm0 > + > + dec r10d > + jnz NEAR $L$oop_key192 > + > + mov DWORD[32+rax],edx > + xor eax,eax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$14rounds: > + movups xmm2,XMMWORD[16+rcx] > + mov edx,13 > + lea rax,[16+rax] > + cmp r10d,268435456 > + je NEAR $L$14rounds_alt > + > + movups XMMWORD[r8],xmm0 > + movups XMMWORD[16+r8],xmm2 > +DB 102,15,58,223,202,1 > + call $L$key_expansion_256a_cold > +DB 102,15,58,223,200,1 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,2 > + call $L$key_expansion_256a > +DB 102,15,58,223,200,2 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,4 > + call $L$key_expansion_256a > +DB 102,15,58,223,200,4 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,8 > + call $L$key_expansion_256a > +DB 102,15,58,223,200,8 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,16 > + call $L$key_expansion_256a > +DB 102,15,58,223,200,16 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,32 > + call $L$key_expansion_256a > +DB 102,15,58,223,200,32 > + call $L$key_expansion_256b > +DB 102,15,58,223,202,64 > + call $L$key_expansion_256a > + movups XMMWORD[rax],xmm0 > + mov DWORD[16+rax],edx > + xor rax,rax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$14rounds_alt: > + movdqa xmm5,XMMWORD[$L$key_rotate] > + movdqa xmm4,XMMWORD[$L$key_rcon1] > + mov r10d,7 > + movdqu XMMWORD[r8],xmm0 > + movdqa xmm1,xmm2 > + movdqu XMMWORD[16+r8],xmm2 > + jmp NEAR $L$oop_key256 > + > +ALIGN 16 > +$L$oop_key256: > +DB 102,15,56,0,213 > +DB 102,15,56,221,212 > + > + movdqa xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm3,xmm0 > + pslldq xmm0,4 > + pxor xmm0,xmm3 > + pslld xmm4,1 > + > + pxor xmm0,xmm2 > + movdqu XMMWORD[rax],xmm0 > + > + dec r10d > + jz NEAR $L$done_key256 > + > + pshufd xmm2,xmm0,0xff > + pxor xmm3,xmm3 > +DB 102,15,56,221,211 > + > + movdqa xmm3,xmm1 > + pslldq xmm1,4 > + pxor xmm3,xmm1 > + pslldq xmm1,4 > + pxor xmm3,xmm1 > + pslldq xmm1,4 > + pxor xmm1,xmm3 > + > + pxor xmm2,xmm1 > + movdqu XMMWORD[16+rax],xmm2 > + lea rax,[32+rax] > + movdqa xmm1,xmm2 > + > + jmp NEAR $L$oop_key256 > + > +$L$done_key256: > + mov DWORD[16+rax],edx > + xor eax,eax > + jmp NEAR $L$enc_key_ret > + > +ALIGN 16 > +$L$bad_keybits: > + mov rax,-2 > +$L$enc_key_ret: > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + add rsp,8 > + > + DB 0F3h,0C3h ;repret > +$L$SEH_end_set_encrypt_key: > + > +ALIGN 16 > +$L$key_expansion_128: > + movups XMMWORD[rax],xmm0 > + lea rax,[16+rax] > +$L$key_expansion_128_cold: > + shufps xmm4,xmm0,16 > + xorps xmm0,xmm4 > + shufps xmm4,xmm0,140 > + xorps xmm0,xmm4 > + shufps xmm1,xmm1,255 > + xorps xmm0,xmm1 > + DB 0F3h,0C3h ;repret > + > +ALIGN 16 > +$L$key_expansion_192a: > + movups XMMWORD[rax],xmm0 > + lea rax,[16+rax] > +$L$key_expansion_192a_cold: > + movaps xmm5,xmm2 > +$L$key_expansion_192b_warm: > + shufps xmm4,xmm0,16 > + movdqa xmm3,xmm2 > + xorps xmm0,xmm4 > + shufps xmm4,xmm0,140 > + pslldq xmm3,4 > + xorps xmm0,xmm4 > + pshufd xmm1,xmm1,85 > + pxor xmm2,xmm3 > + pxor xmm0,xmm1 > + pshufd xmm3,xmm0,255 > + pxor xmm2,xmm3 > + DB 0F3h,0C3h ;repret > + > +ALIGN 16 > +$L$key_expansion_192b: > + movaps xmm3,xmm0 > + shufps xmm5,xmm0,68 > + movups XMMWORD[rax],xmm5 > + shufps xmm3,xmm2,78 > + movups XMMWORD[16+rax],xmm3 > + lea rax,[32+rax] > + jmp NEAR $L$key_expansion_192b_warm > + > +ALIGN 16 > +$L$key_expansion_256a: > + movups XMMWORD[rax],xmm2 > + lea rax,[16+rax] > +$L$key_expansion_256a_cold: > + shufps xmm4,xmm0,16 > + xorps xmm0,xmm4 > + shufps xmm4,xmm0,140 > + xorps xmm0,xmm4 > + shufps xmm1,xmm1,255 > + xorps xmm0,xmm1 > + DB 0F3h,0C3h ;repret > + > +ALIGN 16 > +$L$key_expansion_256b: > + movups XMMWORD[rax],xmm0 > + lea rax,[16+rax] > + > + shufps xmm4,xmm2,16 > + xorps xmm2,xmm4 > + shufps xmm4,xmm2,140 > + xorps xmm2,xmm4 > + shufps xmm1,xmm1,170 > + xorps xmm2,xmm1 > + DB 0F3h,0C3h ;repret > + > + > + > +ALIGN 64 > +$L$bswap_mask: > +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 > +$L$increment32: > + DD 6,6,6,0 > +$L$increment64: > + DD 1,0,0,0 > +$L$xts_magic: > + DD 0x87,0,1,0 > +$L$increment1: > +DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 > +$L$key_rotate: > + DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d > +$L$key_rotate192: > + DD 0x04070605,0x04070605,0x04070605,0x04070605 > +$L$key_rcon1: > + DD 1,1,1,1 > +$L$key_rcon1b: > + DD 0x1b,0x1b,0x1b,0x1b > + > +DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 > +DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 > +DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 > +DB 115,108,46,111,114,103,62,0 > +ALIGN 64 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +ecb_ccm64_se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + lea rsi,[rax] > + lea rdi,[512+r8] > + mov ecx,8 > + DD 0xa548f3fc > + lea rax,[88+rax] > + > + jmp NEAR $L$common_seh_tail > + > + > + > +ALIGN 16 > +ctr_xts_se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + mov rax,QWORD[208+r8] > + > + lea rsi,[((-168))+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + > + mov rbp,QWORD[((-8))+rax] > + mov QWORD[160+r8],rbp > + jmp NEAR $L$common_seh_tail > + > + > + > +ALIGN 16 > +ocb_se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + mov r10d,DWORD[8+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$ocb_no_xmm > + > + mov rax,QWORD[152+r8] > + > + lea rsi,[rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + lea rax,[((160+40))+rax] > + > +$L$ocb_no_xmm: > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + > + jmp NEAR $L$common_seh_tail > + > + > +ALIGN 16 > +cbc_se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[152+r8] > + mov rbx,QWORD[248+r8] > + > + lea r10,[$L$cbc_decrypt_bulk] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[120+r8] > + > + lea r10,[$L$cbc_decrypt_body] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[152+r8] > + > + lea r10,[$L$cbc_ret] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + lea rsi,[16+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + > + mov rax,QWORD[208+r8] > + > + mov rbp,QWORD[((-8))+rax] > + mov QWORD[160+r8],rbp > + > +$L$common_seh_tail: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase > + DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase > + DD $L$SEH_info_ecb wrt ..imagebase > + > + DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase > + DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase > + DD $L$SEH_info_ccm64_enc wrt ..imagebase > + > + DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase > + DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase > + DD $L$SEH_info_ccm64_dec wrt ..imagebase > + > + DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase > + DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase > + DD $L$SEH_info_ctr32 wrt ..imagebase > + > + DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase > + DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase > + DD $L$SEH_info_xts_enc wrt ..imagebase > + > + DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase > + DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase > + DD $L$SEH_info_xts_dec wrt ..imagebase > + > + DD $L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase > + DD $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase > + DD $L$SEH_info_ocb_enc wrt ..imagebase > + > + DD $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase > + DD $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase > + DD $L$SEH_info_ocb_dec wrt ..imagebase > + DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase > + DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase > + DD $L$SEH_info_cbc wrt ..imagebase > + > + DD aesni_set_decrypt_key wrt ..imagebase > + DD $L$SEH_end_set_decrypt_key wrt ..imagebase > + DD $L$SEH_info_key wrt ..imagebase > + > + DD aesni_set_encrypt_key wrt ..imagebase > + DD $L$SEH_end_set_encrypt_key wrt ..imagebase > + DD $L$SEH_info_key wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_ecb: > +DB 9,0,0,0 > + DD ecb_ccm64_se_handler wrt ..imagebase > + DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..ima= gebase > +$L$SEH_info_ccm64_enc: > +DB 9,0,0,0 > + DD ecb_ccm64_se_handler wrt ..imagebase > + DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret > wrt ..imagebase > +$L$SEH_info_ccm64_dec: > +DB 9,0,0,0 > + DD ecb_ccm64_se_handler wrt ..imagebase > + DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret > wrt ..imagebase > +$L$SEH_info_ctr32: > +DB 9,0,0,0 > + DD ctr_xts_se_handler wrt ..imagebase > + DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..im= agebase > +$L$SEH_info_xts_enc: > +DB 9,0,0,0 > + DD ctr_xts_se_handler wrt ..imagebase > + DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue > wrt ..imagebase > +$L$SEH_info_xts_dec: > +DB 9,0,0,0 > + DD ctr_xts_se_handler wrt ..imagebase > + DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue > wrt ..imagebase > +$L$SEH_info_ocb_enc: > +DB 9,0,0,0 > + DD ocb_se_handler wrt ..imagebase > + DD $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue > wrt ..imagebase > + DD $L$ocb_enc_pop wrt ..imagebase > + DD 0 > +$L$SEH_info_ocb_dec: > +DB 9,0,0,0 > + DD ocb_se_handler wrt ..imagebase > + DD $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue > wrt ..imagebase > + DD $L$ocb_dec_pop wrt ..imagebase > + DD 0 > +$L$SEH_info_cbc: > +DB 9,0,0,0 > + DD cbc_se_handler wrt ..imagebase > +$L$SEH_info_key: > +DB 0x01,0x04,0x01,0x00 > +DB 0x04,0x02,0x00,0x00 > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nas= m > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm > new file mode 100644 > index 0000000000..1c911fa294 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm > @@ -0,0 +1,1173 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl > +; > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_encrypt_core: > + > + mov r9,rdx > + mov r11,16 > + mov eax,DWORD[240+rdx] > + movdqa xmm1,xmm9 > + movdqa xmm2,XMMWORD[$L$k_ipt] > + pandn xmm1,xmm0 > + movdqu xmm5,XMMWORD[r9] > + psrld xmm1,4 > + pand xmm0,xmm9 > +DB 102,15,56,0,208 > + movdqa xmm0,XMMWORD[(($L$k_ipt+16))] > +DB 102,15,56,0,193 > + pxor xmm2,xmm5 > + add r9,16 > + pxor xmm0,xmm2 > + lea r10,[$L$k_mc_backward] > + jmp NEAR $L$enc_entry > + > +ALIGN 16 > +$L$enc_loop: > + > + movdqa xmm4,xmm13 > + movdqa xmm0,xmm12 > +DB 102,15,56,0,226 > +DB 102,15,56,0,195 > + pxor xmm4,xmm5 > + movdqa xmm5,xmm15 > + pxor xmm0,xmm4 > + movdqa xmm1,XMMWORD[((-64))+r10*1+r11] > +DB 102,15,56,0,234 > + movdqa xmm4,XMMWORD[r10*1+r11] > + movdqa xmm2,xmm14 > +DB 102,15,56,0,211 > + movdqa xmm3,xmm0 > + pxor xmm2,xmm5 > +DB 102,15,56,0,193 > + add r9,16 > + pxor xmm0,xmm2 > +DB 102,15,56,0,220 > + add r11,16 > + pxor xmm3,xmm0 > +DB 102,15,56,0,193 > + and r11,0x30 > + sub rax,1 > + pxor xmm0,xmm3 > + > +$L$enc_entry: > + > + movdqa xmm1,xmm9 > + movdqa xmm5,xmm11 > + pandn xmm1,xmm0 > + psrld xmm1,4 > + pand xmm0,xmm9 > +DB 102,15,56,0,232 > + movdqa xmm3,xmm10 > + pxor xmm0,xmm1 > +DB 102,15,56,0,217 > + movdqa xmm4,xmm10 > + pxor xmm3,xmm5 > +DB 102,15,56,0,224 > + movdqa xmm2,xmm10 > + pxor xmm4,xmm5 > +DB 102,15,56,0,211 > + movdqa xmm3,xmm10 > + pxor xmm2,xmm0 > +DB 102,15,56,0,220 > + movdqu xmm5,XMMWORD[r9] > + pxor xmm3,xmm1 > + jnz NEAR $L$enc_loop > + > + > + movdqa xmm4,XMMWORD[((-96))+r10] > + movdqa xmm0,XMMWORD[((-80))+r10] > +DB 102,15,56,0,226 > + pxor xmm4,xmm5 > +DB 102,15,56,0,195 > + movdqa xmm1,XMMWORD[64+r10*1+r11] > + pxor xmm0,xmm4 > +DB 102,15,56,0,193 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_decrypt_core: > + > + mov r9,rdx > + mov eax,DWORD[240+rdx] > + movdqa xmm1,xmm9 > + movdqa xmm2,XMMWORD[$L$k_dipt] > + pandn xmm1,xmm0 > + mov r11,rax > + psrld xmm1,4 > + movdqu xmm5,XMMWORD[r9] > + shl r11,4 > + pand xmm0,xmm9 > +DB 102,15,56,0,208 > + movdqa xmm0,XMMWORD[(($L$k_dipt+16))] > + xor r11,0x30 > + lea r10,[$L$k_dsbd] > +DB 102,15,56,0,193 > + and r11,0x30 > + pxor xmm2,xmm5 > + movdqa xmm5,XMMWORD[(($L$k_mc_forward+48))] > + pxor xmm0,xmm2 > + add r9,16 > + add r11,r10 > + jmp NEAR $L$dec_entry > + > +ALIGN 16 > +$L$dec_loop: > + > + > + > + movdqa xmm4,XMMWORD[((-32))+r10] > + movdqa xmm1,XMMWORD[((-16))+r10] > +DB 102,15,56,0,226 > +DB 102,15,56,0,203 > + pxor xmm0,xmm4 > + movdqa xmm4,XMMWORD[r10] > + pxor xmm0,xmm1 > + movdqa xmm1,XMMWORD[16+r10] > + > +DB 102,15,56,0,226 > +DB 102,15,56,0,197 > +DB 102,15,56,0,203 > + pxor xmm0,xmm4 > + movdqa xmm4,XMMWORD[32+r10] > + pxor xmm0,xmm1 > + movdqa xmm1,XMMWORD[48+r10] > + > +DB 102,15,56,0,226 > +DB 102,15,56,0,197 > +DB 102,15,56,0,203 > + pxor xmm0,xmm4 > + movdqa xmm4,XMMWORD[64+r10] > + pxor xmm0,xmm1 > + movdqa xmm1,XMMWORD[80+r10] > + > +DB 102,15,56,0,226 > +DB 102,15,56,0,197 > +DB 102,15,56,0,203 > + pxor xmm0,xmm4 > + add r9,16 > +DB 102,15,58,15,237,12 > + pxor xmm0,xmm1 > + sub rax,1 > + > +$L$dec_entry: > + > + movdqa xmm1,xmm9 > + pandn xmm1,xmm0 > + movdqa xmm2,xmm11 > + psrld xmm1,4 > + pand xmm0,xmm9 > +DB 102,15,56,0,208 > + movdqa xmm3,xmm10 > + pxor xmm0,xmm1 > +DB 102,15,56,0,217 > + movdqa xmm4,xmm10 > + pxor xmm3,xmm2 > +DB 102,15,56,0,224 > + pxor xmm4,xmm2 > + movdqa xmm2,xmm10 > +DB 102,15,56,0,211 > + movdqa xmm3,xmm10 > + pxor xmm2,xmm0 > +DB 102,15,56,0,220 > + movdqu xmm0,XMMWORD[r9] > + pxor xmm3,xmm1 > + jnz NEAR $L$dec_loop > + > + > + movdqa xmm4,XMMWORD[96+r10] > +DB 102,15,56,0,226 > + pxor xmm4,xmm0 > + movdqa xmm0,XMMWORD[112+r10] > + movdqa xmm2,XMMWORD[((-352))+r11] > +DB 102,15,56,0,195 > + pxor xmm0,xmm4 > +DB 102,15,56,0,194 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_schedule_core: > + > + > + > + > + > + > + call _vpaes_preheat > + movdqa xmm8,XMMWORD[$L$k_rcon] > + movdqu xmm0,XMMWORD[rdi] > + > + > + movdqa xmm3,xmm0 > + lea r11,[$L$k_ipt] > + call _vpaes_schedule_transform > + movdqa xmm7,xmm0 > + > + lea r10,[$L$k_sr] > + test rcx,rcx > + jnz NEAR $L$schedule_am_decrypting > + > + > + movdqu XMMWORD[rdx],xmm0 > + jmp NEAR $L$schedule_go > + > +$L$schedule_am_decrypting: > + > + movdqa xmm1,XMMWORD[r10*1+r8] > +DB 102,15,56,0,217 > + movdqu XMMWORD[rdx],xmm3 > + xor r8,0x30 > + > +$L$schedule_go: > + cmp esi,192 > + ja NEAR $L$schedule_256 > + je NEAR $L$schedule_192 > + > + > + > + > + > + > + > + > + > + > +$L$schedule_128: > + mov esi,10 > + > +$L$oop_schedule_128: > + call _vpaes_schedule_round > + dec rsi > + jz NEAR $L$schedule_mangle_last > + call _vpaes_schedule_mangle > + jmp NEAR $L$oop_schedule_128 > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +$L$schedule_192: > + movdqu xmm0,XMMWORD[8+rdi] > + call _vpaes_schedule_transform > + movdqa xmm6,xmm0 > + pxor xmm4,xmm4 > + movhlps xmm6,xmm4 > + mov esi,4 > + > +$L$oop_schedule_192: > + call _vpaes_schedule_round > +DB 102,15,58,15,198,8 > + call _vpaes_schedule_mangle > + call _vpaes_schedule_192_smear > + call _vpaes_schedule_mangle > + call _vpaes_schedule_round > + dec rsi > + jz NEAR $L$schedule_mangle_last > + call _vpaes_schedule_mangle > + call _vpaes_schedule_192_smear > + jmp NEAR $L$oop_schedule_192 > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +$L$schedule_256: > + movdqu xmm0,XMMWORD[16+rdi] > + call _vpaes_schedule_transform > + mov esi,7 > + > +$L$oop_schedule_256: > + call _vpaes_schedule_mangle > + movdqa xmm6,xmm0 > + > + > + call _vpaes_schedule_round > + dec rsi > + jz NEAR $L$schedule_mangle_last > + call _vpaes_schedule_mangle > + > + > + pshufd xmm0,xmm0,0xFF > + movdqa xmm5,xmm7 > + movdqa xmm7,xmm6 > + call _vpaes_schedule_low_round > + movdqa xmm7,xmm5 > + > + jmp NEAR $L$oop_schedule_256 > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +$L$schedule_mangle_last: > + > + lea r11,[$L$k_deskew] > + test rcx,rcx > + jnz NEAR $L$schedule_mangle_last_dec > + > + > + movdqa xmm1,XMMWORD[r10*1+r8] > +DB 102,15,56,0,193 > + lea r11,[$L$k_opt] > + add rdx,32 > + > +$L$schedule_mangle_last_dec: > + add rdx,-16 > + pxor xmm0,XMMWORD[$L$k_s63] > + call _vpaes_schedule_transform > + movdqu XMMWORD[rdx],xmm0 > + > + > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + pxor xmm6,xmm6 > + pxor xmm7,xmm7 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_schedule_192_smear: > + > + pshufd xmm1,xmm6,0x80 > + pshufd xmm0,xmm7,0xFE > + pxor xmm6,xmm1 > + pxor xmm1,xmm1 > + pxor xmm6,xmm0 > + movdqa xmm0,xmm6 > + movhlps xmm6,xmm1 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_schedule_round: > + > + > + pxor xmm1,xmm1 > +DB 102,65,15,58,15,200,15 > +DB 102,69,15,58,15,192,15 > + pxor xmm7,xmm1 > + > + > + pshufd xmm0,xmm0,0xFF > +DB 102,15,58,15,192,1 > + > + > + > + > +_vpaes_schedule_low_round: > + > + movdqa xmm1,xmm7 > + pslldq xmm7,4 > + pxor xmm7,xmm1 > + movdqa xmm1,xmm7 > + pslldq xmm7,8 > + pxor xmm7,xmm1 > + pxor xmm7,XMMWORD[$L$k_s63] > + > + > + movdqa xmm1,xmm9 > + pandn xmm1,xmm0 > + psrld xmm1,4 > + pand xmm0,xmm9 > + movdqa xmm2,xmm11 > +DB 102,15,56,0,208 > + pxor xmm0,xmm1 > + movdqa xmm3,xmm10 > +DB 102,15,56,0,217 > + pxor xmm3,xmm2 > + movdqa xmm4,xmm10 > +DB 102,15,56,0,224 > + pxor xmm4,xmm2 > + movdqa xmm2,xmm10 > +DB 102,15,56,0,211 > + pxor xmm2,xmm0 > + movdqa xmm3,xmm10 > +DB 102,15,56,0,220 > + pxor xmm3,xmm1 > + movdqa xmm4,xmm13 > +DB 102,15,56,0,226 > + movdqa xmm0,xmm12 > +DB 102,15,56,0,195 > + pxor xmm0,xmm4 > + > + > + pxor xmm0,xmm7 > + movdqa xmm7,xmm0 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_schedule_transform: > + > + movdqa xmm1,xmm9 > + pandn xmm1,xmm0 > + psrld xmm1,4 > + pand xmm0,xmm9 > + movdqa xmm2,XMMWORD[r11] > +DB 102,15,56,0,208 > + movdqa xmm0,XMMWORD[16+r11] > +DB 102,15,56,0,193 > + pxor xmm0,xmm2 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_schedule_mangle: > + > + movdqa xmm4,xmm0 > + movdqa xmm5,XMMWORD[$L$k_mc_forward] > + test rcx,rcx > + jnz NEAR $L$schedule_mangle_dec > + > + > + add rdx,16 > + pxor xmm4,XMMWORD[$L$k_s63] > +DB 102,15,56,0,229 > + movdqa xmm3,xmm4 > +DB 102,15,56,0,229 > + pxor xmm3,xmm4 > +DB 102,15,56,0,229 > + pxor xmm3,xmm4 > + > + jmp NEAR $L$schedule_mangle_both > +ALIGN 16 > +$L$schedule_mangle_dec: > + > + lea r11,[$L$k_dksd] > + movdqa xmm1,xmm9 > + pandn xmm1,xmm4 > + psrld xmm1,4 > + pand xmm4,xmm9 > + > + movdqa xmm2,XMMWORD[r11] > +DB 102,15,56,0,212 > + movdqa xmm3,XMMWORD[16+r11] > +DB 102,15,56,0,217 > + pxor xmm3,xmm2 > +DB 102,15,56,0,221 > + > + movdqa xmm2,XMMWORD[32+r11] > +DB 102,15,56,0,212 > + pxor xmm2,xmm3 > + movdqa xmm3,XMMWORD[48+r11] > +DB 102,15,56,0,217 > + pxor xmm3,xmm2 > +DB 102,15,56,0,221 > + > + movdqa xmm2,XMMWORD[64+r11] > +DB 102,15,56,0,212 > + pxor xmm2,xmm3 > + movdqa xmm3,XMMWORD[80+r11] > +DB 102,15,56,0,217 > + pxor xmm3,xmm2 > +DB 102,15,56,0,221 > + > + movdqa xmm2,XMMWORD[96+r11] > +DB 102,15,56,0,212 > + pxor xmm2,xmm3 > + movdqa xmm3,XMMWORD[112+r11] > +DB 102,15,56,0,217 > + pxor xmm3,xmm2 > + > + add rdx,-16 > + > +$L$schedule_mangle_both: > + movdqa xmm1,XMMWORD[r10*1+r8] > +DB 102,15,56,0,217 > + add r8,-16 > + and r8,0x30 > + movdqu XMMWORD[rdx],xmm3 > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > +global vpaes_set_encrypt_key > + > +ALIGN 16 > +vpaes_set_encrypt_key: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_vpaes_set_encrypt_key: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + lea rsp,[((-184))+rsp] > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$enc_key_body: > + mov eax,esi > + shr eax,5 > + add eax,5 > + mov DWORD[240+rdx],eax > + > + mov ecx,0 > + mov r8d,0x30 > + call _vpaes_schedule_core > + movaps xmm6,XMMWORD[16+rsp] > + movaps xmm7,XMMWORD[32+rsp] > + movaps xmm8,XMMWORD[48+rsp] > + movaps xmm9,XMMWORD[64+rsp] > + movaps xmm10,XMMWORD[80+rsp] > + movaps xmm11,XMMWORD[96+rsp] > + movaps xmm12,XMMWORD[112+rsp] > + movaps xmm13,XMMWORD[128+rsp] > + movaps xmm14,XMMWORD[144+rsp] > + movaps xmm15,XMMWORD[160+rsp] > + lea rsp,[184+rsp] > +$L$enc_key_epilogue: > + xor eax,eax > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_vpaes_set_encrypt_key: > + > +global vpaes_set_decrypt_key > + > +ALIGN 16 > +vpaes_set_decrypt_key: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_vpaes_set_decrypt_key: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + lea rsp,[((-184))+rsp] > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$dec_key_body: > + mov eax,esi > + shr eax,5 > + add eax,5 > + mov DWORD[240+rdx],eax > + shl eax,4 > + lea rdx,[16+rax*1+rdx] > + > + mov ecx,1 > + mov r8d,esi > + shr r8d,1 > + and r8d,32 > + xor r8d,32 > + call _vpaes_schedule_core > + movaps xmm6,XMMWORD[16+rsp] > + movaps xmm7,XMMWORD[32+rsp] > + movaps xmm8,XMMWORD[48+rsp] > + movaps xmm9,XMMWORD[64+rsp] > + movaps xmm10,XMMWORD[80+rsp] > + movaps xmm11,XMMWORD[96+rsp] > + movaps xmm12,XMMWORD[112+rsp] > + movaps xmm13,XMMWORD[128+rsp] > + movaps xmm14,XMMWORD[144+rsp] > + movaps xmm15,XMMWORD[160+rsp] > + lea rsp,[184+rsp] > +$L$dec_key_epilogue: > + xor eax,eax > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_vpaes_set_decrypt_key: > + > +global vpaes_encrypt > + > +ALIGN 16 > +vpaes_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_vpaes_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + lea rsp,[((-184))+rsp] > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$enc_body: > + movdqu xmm0,XMMWORD[rdi] > + call _vpaes_preheat > + call _vpaes_encrypt_core > + movdqu XMMWORD[rsi],xmm0 > + movaps xmm6,XMMWORD[16+rsp] > + movaps xmm7,XMMWORD[32+rsp] > + movaps xmm8,XMMWORD[48+rsp] > + movaps xmm9,XMMWORD[64+rsp] > + movaps xmm10,XMMWORD[80+rsp] > + movaps xmm11,XMMWORD[96+rsp] > + movaps xmm12,XMMWORD[112+rsp] > + movaps xmm13,XMMWORD[128+rsp] > + movaps xmm14,XMMWORD[144+rsp] > + movaps xmm15,XMMWORD[160+rsp] > + lea rsp,[184+rsp] > +$L$enc_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_vpaes_encrypt: > + > +global vpaes_decrypt > + > +ALIGN 16 > +vpaes_decrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_vpaes_decrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + lea rsp,[((-184))+rsp] > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$dec_body: > + movdqu xmm0,XMMWORD[rdi] > + call _vpaes_preheat > + call _vpaes_decrypt_core > + movdqu XMMWORD[rsi],xmm0 > + movaps xmm6,XMMWORD[16+rsp] > + movaps xmm7,XMMWORD[32+rsp] > + movaps xmm8,XMMWORD[48+rsp] > + movaps xmm9,XMMWORD[64+rsp] > + movaps xmm10,XMMWORD[80+rsp] > + movaps xmm11,XMMWORD[96+rsp] > + movaps xmm12,XMMWORD[112+rsp] > + movaps xmm13,XMMWORD[128+rsp] > + movaps xmm14,XMMWORD[144+rsp] > + movaps xmm15,XMMWORD[160+rsp] > + lea rsp,[184+rsp] > +$L$dec_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_vpaes_decrypt: > +global vpaes_cbc_encrypt > + > +ALIGN 16 > +vpaes_cbc_encrypt: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_vpaes_cbc_encrypt: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + mov r8,QWORD[40+rsp] > + mov r9,QWORD[48+rsp] > + > + > + > + xchg rdx,rcx > + sub rcx,16 > + jc NEAR $L$cbc_abort > + lea rsp,[((-184))+rsp] > + movaps XMMWORD[16+rsp],xmm6 > + movaps XMMWORD[32+rsp],xmm7 > + movaps XMMWORD[48+rsp],xmm8 > + movaps XMMWORD[64+rsp],xmm9 > + movaps XMMWORD[80+rsp],xmm10 > + movaps XMMWORD[96+rsp],xmm11 > + movaps XMMWORD[112+rsp],xmm12 > + movaps XMMWORD[128+rsp],xmm13 > + movaps XMMWORD[144+rsp],xmm14 > + movaps XMMWORD[160+rsp],xmm15 > +$L$cbc_body: > + movdqu xmm6,XMMWORD[r8] > + sub rsi,rdi > + call _vpaes_preheat > + cmp r9d,0 > + je NEAR $L$cbc_dec_loop > + jmp NEAR $L$cbc_enc_loop > +ALIGN 16 > +$L$cbc_enc_loop: > + movdqu xmm0,XMMWORD[rdi] > + pxor xmm0,xmm6 > + call _vpaes_encrypt_core > + movdqa xmm6,xmm0 > + movdqu XMMWORD[rdi*1+rsi],xmm0 > + lea rdi,[16+rdi] > + sub rcx,16 > + jnc NEAR $L$cbc_enc_loop > + jmp NEAR $L$cbc_done > +ALIGN 16 > +$L$cbc_dec_loop: > + movdqu xmm0,XMMWORD[rdi] > + movdqa xmm7,xmm0 > + call _vpaes_decrypt_core > + pxor xmm0,xmm6 > + movdqa xmm6,xmm7 > + movdqu XMMWORD[rdi*1+rsi],xmm0 > + lea rdi,[16+rdi] > + sub rcx,16 > + jnc NEAR $L$cbc_dec_loop > +$L$cbc_done: > + movdqu XMMWORD[r8],xmm6 > + movaps xmm6,XMMWORD[16+rsp] > + movaps xmm7,XMMWORD[32+rsp] > + movaps xmm8,XMMWORD[48+rsp] > + movaps xmm9,XMMWORD[64+rsp] > + movaps xmm10,XMMWORD[80+rsp] > + movaps xmm11,XMMWORD[96+rsp] > + movaps xmm12,XMMWORD[112+rsp] > + movaps xmm13,XMMWORD[128+rsp] > + movaps xmm14,XMMWORD[144+rsp] > + movaps xmm15,XMMWORD[160+rsp] > + lea rsp,[184+rsp] > +$L$cbc_epilogue: > +$L$cbc_abort: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_vpaes_cbc_encrypt: > + > + > + > + > + > + > + > +ALIGN 16 > +_vpaes_preheat: > + > + lea r10,[$L$k_s0F] > + movdqa xmm10,XMMWORD[((-32))+r10] > + movdqa xmm11,XMMWORD[((-16))+r10] > + movdqa xmm9,XMMWORD[r10] > + movdqa xmm13,XMMWORD[48+r10] > + movdqa xmm12,XMMWORD[64+r10] > + movdqa xmm15,XMMWORD[80+r10] > + movdqa xmm14,XMMWORD[96+r10] > + DB 0F3h,0C3h ;repret > + > + > + > + > + > + > + > + > +ALIGN 64 > +_vpaes_consts: > +$L$k_inv: > + DQ 0x0E05060F0D080180,0x040703090A0B0C02 > + DQ 0x01040A060F0B0780,0x030D0E0C02050809 > + > +$L$k_s0F: > + DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F > + > +$L$k_ipt: > + DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 > + DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 > + > +$L$k_sb1: > + DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 > + DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF > +$L$k_sb2: > + DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD > + DQ 0x69EB88400AE12900,0xC2A163C8AB82234A > +$L$k_sbo: > + DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 > + DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA > + > +$L$k_mc_forward: > + DQ 0x0407060500030201,0x0C0F0E0D080B0A09 > + DQ 0x080B0A0904070605,0x000302010C0F0E0D > + DQ 0x0C0F0E0D080B0A09,0x0407060500030201 > + DQ 0x000302010C0F0E0D,0x080B0A0904070605 > + > +$L$k_mc_backward: > + DQ 0x0605040702010003,0x0E0D0C0F0A09080B > + DQ 0x020100030E0D0C0F,0x0A09080B06050407 > + DQ 0x0E0D0C0F0A09080B,0x0605040702010003 > + DQ 0x0A09080B06050407,0x020100030E0D0C0F > + > +$L$k_sr: > + DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 > + DQ 0x030E09040F0A0500,0x0B06010C07020D08 > + DQ 0x0F060D040B020900,0x070E050C030A0108 > + DQ 0x0B0E0104070A0D00,0x0306090C0F020508 > + > +$L$k_rcon: > + DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 > + > +$L$k_s63: > + DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B > + > +$L$k_opt: > + DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 > + DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 > + > +$L$k_deskew: > + DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A > + DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 > + > + > + > + > + > +$L$k_dksd: > + DQ 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9 > + DQ 0x41C277F4B5368300,0x5FDC69EAAB289D1E > +$L$k_dksb: > + DQ 0x9A4FCA1F8550D500,0x03D653861CC94C99 > + DQ 0x115BEDA7B6FC4A00,0xD993256F7E3482C8 > +$L$k_dkse: > + DQ 0xD5031CCA1FC9D600,0x53859A4C994F5086 > + DQ 0xA23196054FDC7BE8,0xCD5EF96A20B31487 > +$L$k_dks9: > + DQ 0xB6116FC87ED9A700,0x4AED933482255BFC > + DQ 0x4576516227143300,0x8BB89FACE9DAFDCE > + > + > + > + > + > +$L$k_dipt: > + DQ 0x0F505B040B545F00,0x154A411E114E451A > + DQ 0x86E383E660056500,0x12771772F491F194 > + > +$L$k_dsb9: > + DQ 0x851C03539A86D600,0xCAD51F504F994CC9 > + DQ 0xC03B1789ECD74900,0x725E2C9EB2FBA565 > +$L$k_dsbd: > + DQ 0x7D57CCDFE6B1A200,0xF56E9B13882A4439 > + DQ 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3 > +$L$k_dsbb: > + DQ 0xD022649296B44200,0x602646F6B0F2D404 > + DQ 0xC19498A6CD596700,0xF3FF0C3E3255AA6B > +$L$k_dsbe: > + DQ 0x46F2929626D4D000,0x2242600464B4F6B0 > + DQ 0x0C55A6CDFFAAC100,0x9467F36B98593E32 > +$L$k_dsbo: > + DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D > + DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C > +DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 > +DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 > +DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 > +DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 > +DB 85,110,105,118,101,114,115,105,116,121,41,0 > +ALIGN 64 > + > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + lea rsi,[16+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + lea rax,[184+rax] > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase > + DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase > + DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase > + > + DD $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase > + DD $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase > + DD $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase > + > + DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase > + DD $L$SEH_end_vpaes_encrypt wrt ..imagebase > + DD $L$SEH_info_vpaes_encrypt wrt ..imagebase > + > + DD $L$SEH_begin_vpaes_decrypt wrt ..imagebase > + DD $L$SEH_end_vpaes_decrypt wrt ..imagebase > + DD $L$SEH_info_vpaes_decrypt wrt ..imagebase > + > + DD $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase > + DD $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase > + DD $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase > + > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_vpaes_set_encrypt_key: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue > wrt ..imagebase > +$L$SEH_info_vpaes_set_decrypt_key: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue > wrt ..imagebase > +$L$SEH_info_vpaes_encrypt: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imageb= ase > +$L$SEH_info_vpaes_decrypt: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imageb= ase > +$L$SEH_info_vpaes_cbc_encrypt: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imageb= ase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm- > x86_64.nasm > new file mode 100644 > index 0000000000..9e1a2d0a40 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm- > x86_64.nasm > @@ -0,0 +1,34 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl > +; > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +global aesni_gcm_encrypt > + > +aesni_gcm_encrypt: > + > + xor eax,eax > + DB 0F3h,0C3h ;repret > + > + > + > +global aesni_gcm_decrypt > + > +aesni_gcm_decrypt: > + > + xor eax,eax > + DB 0F3h,0C3h ;repret > + > + > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash- > x86_64.nasm > new file mode 100644 > index 0000000000..60f283d5fb > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm > @@ -0,0 +1,1569 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl > +; > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > +EXTERN OPENSSL_ia32cap_P > + > +global gcm_gmult_4bit > + > +ALIGN 16 > +gcm_gmult_4bit: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_gcm_gmult_4bit: > + mov rdi,rcx > + mov rsi,rdx > + > + > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + sub rsp,280 > + > +$L$gmult_prologue: > + > + movzx r8,BYTE[15+rdi] > + lea r11,[$L$rem_4bit] > + xor rax,rax > + xor rbx,rbx > + mov al,r8b > + mov bl,r8b > + shl al,4 > + mov rcx,14 > + mov r8,QWORD[8+rax*1+rsi] > + mov r9,QWORD[rax*1+rsi] > + and bl,0xf0 > + mov rdx,r8 > + jmp NEAR $L$oop1 > + > +ALIGN 16 > +$L$oop1: > + shr r8,4 > + and rdx,0xf > + mov r10,r9 > + mov al,BYTE[rcx*1+rdi] > + shr r9,4 > + xor r8,QWORD[8+rbx*1+rsi] > + shl r10,60 > + xor r9,QWORD[rbx*1+rsi] > + mov bl,al > + xor r9,QWORD[rdx*8+r11] > + mov rdx,r8 > + shl al,4 > + xor r8,r10 > + dec rcx > + js NEAR $L$break1 > + > + shr r8,4 > + and rdx,0xf > + mov r10,r9 > + shr r9,4 > + xor r8,QWORD[8+rax*1+rsi] > + shl r10,60 > + xor r9,QWORD[rax*1+rsi] > + and bl,0xf0 > + xor r9,QWORD[rdx*8+r11] > + mov rdx,r8 > + xor r8,r10 > + jmp NEAR $L$oop1 > + > +ALIGN 16 > +$L$break1: > + shr r8,4 > + and rdx,0xf > + mov r10,r9 > + shr r9,4 > + xor r8,QWORD[8+rax*1+rsi] > + shl r10,60 > + xor r9,QWORD[rax*1+rsi] > + and bl,0xf0 > + xor r9,QWORD[rdx*8+r11] > + mov rdx,r8 > + xor r8,r10 > + > + shr r8,4 > + and rdx,0xf > + mov r10,r9 > + shr r9,4 > + xor r8,QWORD[8+rbx*1+rsi] > + shl r10,60 > + xor r9,QWORD[rbx*1+rsi] > + xor r8,r10 > + xor r9,QWORD[rdx*8+r11] > + > + bswap r8 > + bswap r9 > + mov QWORD[8+rdi],r8 > + mov QWORD[rdi],r9 > + > + lea rsi,[((280+48))+rsp] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$gmult_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_gcm_gmult_4bit: > +global gcm_ghash_4bit > + > +ALIGN 16 > +gcm_ghash_4bit: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_gcm_ghash_4bit: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + mov rcx,r9 > + > + > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + sub rsp,280 > + > +$L$ghash_prologue: > + mov r14,rdx > + mov r15,rcx > + sub rsi,-128 > + lea rbp,[((16+128))+rsp] > + xor edx,edx > + mov r8,QWORD[((0+0-128))+rsi] > + mov rax,QWORD[((0+8-128))+rsi] > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov r9,QWORD[((16+0-128))+rsi] > + shl dl,4 > + mov rbx,QWORD[((16+8-128))+rsi] > + shl r10,60 > + mov BYTE[rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[rbp],r8 > + mov r8,QWORD[((32+0-128))+rsi] > + shl dl,4 > + mov QWORD[((0-128))+rbp],rax > + mov rax,QWORD[((32+8-128))+rsi] > + shl r10,60 > + mov BYTE[1+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[8+rbp],r9 > + mov r9,QWORD[((48+0-128))+rsi] > + shl dl,4 > + mov QWORD[((8-128))+rbp],rbx > + mov rbx,QWORD[((48+8-128))+rsi] > + shl r10,60 > + mov BYTE[2+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[16+rbp],r8 > + mov r8,QWORD[((64+0-128))+rsi] > + shl dl,4 > + mov QWORD[((16-128))+rbp],rax > + mov rax,QWORD[((64+8-128))+rsi] > + shl r10,60 > + mov BYTE[3+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[24+rbp],r9 > + mov r9,QWORD[((80+0-128))+rsi] > + shl dl,4 > + mov QWORD[((24-128))+rbp],rbx > + mov rbx,QWORD[((80+8-128))+rsi] > + shl r10,60 > + mov BYTE[4+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[32+rbp],r8 > + mov r8,QWORD[((96+0-128))+rsi] > + shl dl,4 > + mov QWORD[((32-128))+rbp],rax > + mov rax,QWORD[((96+8-128))+rsi] > + shl r10,60 > + mov BYTE[5+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[40+rbp],r9 > + mov r9,QWORD[((112+0-128))+rsi] > + shl dl,4 > + mov QWORD[((40-128))+rbp],rbx > + mov rbx,QWORD[((112+8-128))+rsi] > + shl r10,60 > + mov BYTE[6+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[48+rbp],r8 > + mov r8,QWORD[((128+0-128))+rsi] > + shl dl,4 > + mov QWORD[((48-128))+rbp],rax > + mov rax,QWORD[((128+8-128))+rsi] > + shl r10,60 > + mov BYTE[7+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[56+rbp],r9 > + mov r9,QWORD[((144+0-128))+rsi] > + shl dl,4 > + mov QWORD[((56-128))+rbp],rbx > + mov rbx,QWORD[((144+8-128))+rsi] > + shl r10,60 > + mov BYTE[8+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[64+rbp],r8 > + mov r8,QWORD[((160+0-128))+rsi] > + shl dl,4 > + mov QWORD[((64-128))+rbp],rax > + mov rax,QWORD[((160+8-128))+rsi] > + shl r10,60 > + mov BYTE[9+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[72+rbp],r9 > + mov r9,QWORD[((176+0-128))+rsi] > + shl dl,4 > + mov QWORD[((72-128))+rbp],rbx > + mov rbx,QWORD[((176+8-128))+rsi] > + shl r10,60 > + mov BYTE[10+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[80+rbp],r8 > + mov r8,QWORD[((192+0-128))+rsi] > + shl dl,4 > + mov QWORD[((80-128))+rbp],rax > + mov rax,QWORD[((192+8-128))+rsi] > + shl r10,60 > + mov BYTE[11+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[88+rbp],r9 > + mov r9,QWORD[((208+0-128))+rsi] > + shl dl,4 > + mov QWORD[((88-128))+rbp],rbx > + mov rbx,QWORD[((208+8-128))+rsi] > + shl r10,60 > + mov BYTE[12+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[96+rbp],r8 > + mov r8,QWORD[((224+0-128))+rsi] > + shl dl,4 > + mov QWORD[((96-128))+rbp],rax > + mov rax,QWORD[((224+8-128))+rsi] > + shl r10,60 > + mov BYTE[13+rsp],dl > + or rbx,r10 > + mov dl,al > + shr rax,4 > + mov r10,r8 > + shr r8,4 > + mov QWORD[104+rbp],r9 > + mov r9,QWORD[((240+0-128))+rsi] > + shl dl,4 > + mov QWORD[((104-128))+rbp],rbx > + mov rbx,QWORD[((240+8-128))+rsi] > + shl r10,60 > + mov BYTE[14+rsp],dl > + or rax,r10 > + mov dl,bl > + shr rbx,4 > + mov r10,r9 > + shr r9,4 > + mov QWORD[112+rbp],r8 > + shl dl,4 > + mov QWORD[((112-128))+rbp],rax > + shl r10,60 > + mov BYTE[15+rsp],dl > + or rbx,r10 > + mov QWORD[120+rbp],r9 > + mov QWORD[((120-128))+rbp],rbx > + add rsi,-128 > + mov r8,QWORD[8+rdi] > + mov r9,QWORD[rdi] > + add r15,r14 > + lea r11,[$L$rem_8bit] > + jmp NEAR $L$outer_loop > +ALIGN 16 > +$L$outer_loop: > + xor r9,QWORD[r14] > + mov rdx,QWORD[8+r14] > + lea r14,[16+r14] > + xor rdx,r8 > + mov QWORD[rdi],r9 > + mov QWORD[8+rdi],rdx > + shr rdx,32 > + xor rax,rax > + rol edx,8 > + mov al,dl > + movzx ebx,dl > + shl al,4 > + shr ebx,4 > + rol edx,8 > + mov r8,QWORD[8+rax*1+rsi] > + mov r9,QWORD[rax*1+rsi] > + mov al,dl > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + xor r12,r8 > + mov r10,r9 > + shr r8,8 > + movzx r12,r12b > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + mov edx,DWORD[8+rdi] > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + mov edx,DWORD[4+rdi] > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + mov edx,DWORD[rdi] > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + shr ecx,4 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r12,WORD[r12*2+r11] > + movzx ebx,dl > + shl al,4 > + movzx r13,BYTE[rcx*1+rsp] > + shr ebx,4 > + shl r12,48 > + xor r13,r8 > + mov r10,r9 > + xor r9,r12 > + shr r8,8 > + movzx r13,r13b > + shr r9,8 > + xor r8,QWORD[((-128))+rcx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rcx*8+rbp] > + rol edx,8 > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + mov al,dl > + xor r8,r10 > + movzx r13,WORD[r13*2+r11] > + movzx ecx,dl > + shl al,4 > + movzx r12,BYTE[rbx*1+rsp] > + and ecx,240 > + shl r13,48 > + xor r12,r8 > + mov r10,r9 > + xor r9,r13 > + shr r8,8 > + movzx r12,r12b > + mov edx,DWORD[((-4))+rdi] > + shr r9,8 > + xor r8,QWORD[((-128))+rbx*8+rbp] > + shl r10,56 > + xor r9,QWORD[rbx*8+rbp] > + movzx r12,WORD[r12*2+r11] > + xor r8,QWORD[8+rax*1+rsi] > + xor r9,QWORD[rax*1+rsi] > + shl r12,48 > + xor r8,r10 > + xor r9,r12 > + movzx r13,r8b > + shr r8,4 > + mov r10,r9 > + shl r13b,4 > + shr r9,4 > + xor r8,QWORD[8+rcx*1+rsi] > + movzx r13,WORD[r13*2+r11] > + shl r10,60 > + xor r9,QWORD[rcx*1+rsi] > + xor r8,r10 > + shl r13,48 > + bswap r8 > + xor r9,r13 > + bswap r9 > + cmp r14,r15 > + jb NEAR $L$outer_loop > + mov QWORD[8+rdi],r8 > + mov QWORD[rdi],r9 > + > + lea rsi,[((280+48))+rsp] > + > + mov r15,QWORD[((-48))+rsi] > + > + mov r14,QWORD[((-40))+rsi] > + > + mov r13,QWORD[((-32))+rsi] > + > + mov r12,QWORD[((-24))+rsi] > + > + mov rbp,QWORD[((-16))+rsi] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$ghash_epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_gcm_ghash_4bit: > +global gcm_init_clmul > + > +ALIGN 16 > +gcm_init_clmul: > + > +$L$_init_clmul: > +$L$SEH_begin_gcm_init_clmul: > + > +DB 0x48,0x83,0xec,0x18 > +DB 0x0f,0x29,0x34,0x24 > + movdqu xmm2,XMMWORD[rdx] > + pshufd xmm2,xmm2,78 > + > + > + pshufd xmm4,xmm2,255 > + movdqa xmm3,xmm2 > + psllq xmm2,1 > + pxor xmm5,xmm5 > + psrlq xmm3,63 > + pcmpgtd xmm5,xmm4 > + pslldq xmm3,8 > + por xmm2,xmm3 > + > + > + pand xmm5,XMMWORD[$L$0x1c2_polynomial] > + pxor xmm2,xmm5 > + > + > + pshufd xmm6,xmm2,78 > + movdqa xmm0,xmm2 > + pxor xmm6,xmm2 > + movdqa xmm1,xmm0 > + pshufd xmm3,xmm0,78 > + pxor xmm3,xmm0 > +DB 102,15,58,68,194,0 > +DB 102,15,58,68,202,17 > +DB 102,15,58,68,222,0 > + pxor xmm3,xmm0 > + pxor xmm3,xmm1 > + > + movdqa xmm4,xmm3 > + psrldq xmm3,8 > + pslldq xmm4,8 > + pxor xmm1,xmm3 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + pshufd xmm3,xmm2,78 > + pshufd xmm4,xmm0,78 > + pxor xmm3,xmm2 > + movdqu XMMWORD[rcx],xmm2 > + pxor xmm4,xmm0 > + movdqu XMMWORD[16+rcx],xmm0 > +DB 102,15,58,15,227,8 > + movdqu XMMWORD[32+rcx],xmm4 > + movdqa xmm1,xmm0 > + pshufd xmm3,xmm0,78 > + pxor xmm3,xmm0 > +DB 102,15,58,68,194,0 > +DB 102,15,58,68,202,17 > +DB 102,15,58,68,222,0 > + pxor xmm3,xmm0 > + pxor xmm3,xmm1 > + > + movdqa xmm4,xmm3 > + psrldq xmm3,8 > + pslldq xmm4,8 > + pxor xmm1,xmm3 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + movdqa xmm5,xmm0 > + movdqa xmm1,xmm0 > + pshufd xmm3,xmm0,78 > + pxor xmm3,xmm0 > +DB 102,15,58,68,194,0 > +DB 102,15,58,68,202,17 > +DB 102,15,58,68,222,0 > + pxor xmm3,xmm0 > + pxor xmm3,xmm1 > + > + movdqa xmm4,xmm3 > + psrldq xmm3,8 > + pslldq xmm4,8 > + pxor xmm1,xmm3 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + pshufd xmm3,xmm5,78 > + pshufd xmm4,xmm0,78 > + pxor xmm3,xmm5 > + movdqu XMMWORD[48+rcx],xmm5 > + pxor xmm4,xmm0 > + movdqu XMMWORD[64+rcx],xmm0 > +DB 102,15,58,15,227,8 > + movdqu XMMWORD[80+rcx],xmm4 > + movaps xmm6,XMMWORD[rsp] > + lea rsp,[24+rsp] > +$L$SEH_end_gcm_init_clmul: > + DB 0F3h,0C3h ;repret > + > + > +global gcm_gmult_clmul > + > +ALIGN 16 > +gcm_gmult_clmul: > + > +$L$_gmult_clmul: > + movdqu xmm0,XMMWORD[rcx] > + movdqa xmm5,XMMWORD[$L$bswap_mask] > + movdqu xmm2,XMMWORD[rdx] > + movdqu xmm4,XMMWORD[32+rdx] > +DB 102,15,56,0,197 > + movdqa xmm1,xmm0 > + pshufd xmm3,xmm0,78 > + pxor xmm3,xmm0 > +DB 102,15,58,68,194,0 > +DB 102,15,58,68,202,17 > +DB 102,15,58,68,220,0 > + pxor xmm3,xmm0 > + pxor xmm3,xmm1 > + > + movdqa xmm4,xmm3 > + psrldq xmm3,8 > + pslldq xmm4,8 > + pxor xmm1,xmm3 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > +DB 102,15,56,0,197 > + movdqu XMMWORD[rcx],xmm0 > + DB 0F3h,0C3h ;repret > + > + > +global gcm_ghash_clmul > + > +ALIGN 32 > +gcm_ghash_clmul: > + > +$L$_ghash_clmul: > + lea rax,[((-136))+rsp] > +$L$SEH_begin_gcm_ghash_clmul: > + > +DB 0x48,0x8d,0x60,0xe0 > +DB 0x0f,0x29,0x70,0xe0 > +DB 0x0f,0x29,0x78,0xf0 > +DB 0x44,0x0f,0x29,0x00 > +DB 0x44,0x0f,0x29,0x48,0x10 > +DB 0x44,0x0f,0x29,0x50,0x20 > +DB 0x44,0x0f,0x29,0x58,0x30 > +DB 0x44,0x0f,0x29,0x60,0x40 > +DB 0x44,0x0f,0x29,0x68,0x50 > +DB 0x44,0x0f,0x29,0x70,0x60 > +DB 0x44,0x0f,0x29,0x78,0x70 > + movdqa xmm10,XMMWORD[$L$bswap_mask] > + > + movdqu xmm0,XMMWORD[rcx] > + movdqu xmm2,XMMWORD[rdx] > + movdqu xmm7,XMMWORD[32+rdx] > +DB 102,65,15,56,0,194 > + > + sub r9,0x10 > + jz NEAR $L$odd_tail > + > + movdqu xmm6,XMMWORD[16+rdx] > + mov eax,DWORD[((OPENSSL_ia32cap_P+4))] > + cmp r9,0x30 > + jb NEAR $L$skip4x > + > + and eax,71303168 > + cmp eax,4194304 > + je NEAR $L$skip4x > + > + sub r9,0x30 > + mov rax,0xA040608020C0E000 > + movdqu xmm14,XMMWORD[48+rdx] > + movdqu xmm15,XMMWORD[64+rdx] > + > + > + > + > + movdqu xmm3,XMMWORD[48+r8] > + movdqu xmm11,XMMWORD[32+r8] > +DB 102,65,15,56,0,218 > +DB 102,69,15,56,0,218 > + movdqa xmm5,xmm3 > + pshufd xmm4,xmm3,78 > + pxor xmm4,xmm3 > +DB 102,15,58,68,218,0 > +DB 102,15,58,68,234,17 > +DB 102,15,58,68,231,0 > + > + movdqa xmm13,xmm11 > + pshufd xmm12,xmm11,78 > + pxor xmm12,xmm11 > +DB 102,68,15,58,68,222,0 > +DB 102,68,15,58,68,238,17 > +DB 102,68,15,58,68,231,16 > + xorps xmm3,xmm11 > + xorps xmm5,xmm13 > + movups xmm7,XMMWORD[80+rdx] > + xorps xmm4,xmm12 > + > + movdqu xmm11,XMMWORD[16+r8] > + movdqu xmm8,XMMWORD[r8] > +DB 102,69,15,56,0,218 > +DB 102,69,15,56,0,194 > + movdqa xmm13,xmm11 > + pshufd xmm12,xmm11,78 > + pxor xmm0,xmm8 > + pxor xmm12,xmm11 > +DB 102,69,15,58,68,222,0 > + movdqa xmm1,xmm0 > + pshufd xmm8,xmm0,78 > + pxor xmm8,xmm0 > +DB 102,69,15,58,68,238,17 > +DB 102,68,15,58,68,231,0 > + xorps xmm3,xmm11 > + xorps xmm5,xmm13 > + > + lea r8,[64+r8] > + sub r9,0x40 > + jc NEAR $L$tail4x > + > + jmp NEAR $L$mod4_loop > +ALIGN 32 > +$L$mod4_loop: > +DB 102,65,15,58,68,199,0 > + xorps xmm4,xmm12 > + movdqu xmm11,XMMWORD[48+r8] > +DB 102,69,15,56,0,218 > +DB 102,65,15,58,68,207,17 > + xorps xmm0,xmm3 > + movdqu xmm3,XMMWORD[32+r8] > + movdqa xmm13,xmm11 > +DB 102,68,15,58,68,199,16 > + pshufd xmm12,xmm11,78 > + xorps xmm1,xmm5 > + pxor xmm12,xmm11 > +DB 102,65,15,56,0,218 > + movups xmm7,XMMWORD[32+rdx] > + xorps xmm8,xmm4 > +DB 102,68,15,58,68,218,0 > + pshufd xmm4,xmm3,78 > + > + pxor xmm8,xmm0 > + movdqa xmm5,xmm3 > + pxor xmm8,xmm1 > + pxor xmm4,xmm3 > + movdqa xmm9,xmm8 > +DB 102,68,15,58,68,234,17 > + pslldq xmm8,8 > + psrldq xmm9,8 > + pxor xmm0,xmm8 > + movdqa xmm8,XMMWORD[$L$7_mask] > + pxor xmm1,xmm9 > +DB 102,76,15,110,200 > + > + pand xmm8,xmm0 > +DB 102,69,15,56,0,200 > + pxor xmm9,xmm0 > +DB 102,68,15,58,68,231,0 > + psllq xmm9,57 > + movdqa xmm8,xmm9 > + pslldq xmm9,8 > +DB 102,15,58,68,222,0 > + psrldq xmm8,8 > + pxor xmm0,xmm9 > + pxor xmm1,xmm8 > + movdqu xmm8,XMMWORD[r8] > + > + movdqa xmm9,xmm0 > + psrlq xmm0,1 > +DB 102,15,58,68,238,17 > + xorps xmm3,xmm11 > + movdqu xmm11,XMMWORD[16+r8] > +DB 102,69,15,56,0,218 > +DB 102,15,58,68,231,16 > + xorps xmm5,xmm13 > + movups xmm7,XMMWORD[80+rdx] > +DB 102,69,15,56,0,194 > + pxor xmm1,xmm9 > + pxor xmm9,xmm0 > + psrlq xmm0,5 > + > + movdqa xmm13,xmm11 > + pxor xmm4,xmm12 > + pshufd xmm12,xmm11,78 > + pxor xmm0,xmm9 > + pxor xmm1,xmm8 > + pxor xmm12,xmm11 > +DB 102,69,15,58,68,222,0 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + movdqa xmm1,xmm0 > +DB 102,69,15,58,68,238,17 > + xorps xmm3,xmm11 > + pshufd xmm8,xmm0,78 > + pxor xmm8,xmm0 > + > +DB 102,68,15,58,68,231,0 > + xorps xmm5,xmm13 > + > + lea r8,[64+r8] > + sub r9,0x40 > + jnc NEAR $L$mod4_loop > + > +$L$tail4x: > +DB 102,65,15,58,68,199,0 > +DB 102,65,15,58,68,207,17 > +DB 102,68,15,58,68,199,16 > + xorps xmm4,xmm12 > + xorps xmm0,xmm3 > + xorps xmm1,xmm5 > + pxor xmm1,xmm0 > + pxor xmm8,xmm4 > + > + pxor xmm8,xmm1 > + pxor xmm1,xmm0 > + > + movdqa xmm9,xmm8 > + psrldq xmm8,8 > + pslldq xmm9,8 > + pxor xmm1,xmm8 > + pxor xmm0,xmm9 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + add r9,0x40 > + jz NEAR $L$done > + movdqu xmm7,XMMWORD[32+rdx] > + sub r9,0x10 > + jz NEAR $L$odd_tail > +$L$skip4x: > + > + > + > + > + > + movdqu xmm8,XMMWORD[r8] > + movdqu xmm3,XMMWORD[16+r8] > +DB 102,69,15,56,0,194 > +DB 102,65,15,56,0,218 > + pxor xmm0,xmm8 > + > + movdqa xmm5,xmm3 > + pshufd xmm4,xmm3,78 > + pxor xmm4,xmm3 > +DB 102,15,58,68,218,0 > +DB 102,15,58,68,234,17 > +DB 102,15,58,68,231,0 > + > + lea r8,[32+r8] > + nop > + sub r9,0x20 > + jbe NEAR $L$even_tail > + nop > + jmp NEAR $L$mod_loop > + > +ALIGN 32 > +$L$mod_loop: > + movdqa xmm1,xmm0 > + movdqa xmm8,xmm4 > + pshufd xmm4,xmm0,78 > + pxor xmm4,xmm0 > + > +DB 102,15,58,68,198,0 > +DB 102,15,58,68,206,17 > +DB 102,15,58,68,231,16 > + > + pxor xmm0,xmm3 > + pxor xmm1,xmm5 > + movdqu xmm9,XMMWORD[r8] > + pxor xmm8,xmm0 > +DB 102,69,15,56,0,202 > + movdqu xmm3,XMMWORD[16+r8] > + > + pxor xmm8,xmm1 > + pxor xmm1,xmm9 > + pxor xmm4,xmm8 > +DB 102,65,15,56,0,218 > + movdqa xmm8,xmm4 > + psrldq xmm8,8 > + pslldq xmm4,8 > + pxor xmm1,xmm8 > + pxor xmm0,xmm4 > + > + movdqa xmm5,xmm3 > + > + movdqa xmm9,xmm0 > + movdqa xmm8,xmm0 > + psllq xmm0,5 > + pxor xmm8,xmm0 > +DB 102,15,58,68,218,0 > + psllq xmm0,1 > + pxor xmm0,xmm8 > + psllq xmm0,57 > + movdqa xmm8,xmm0 > + pslldq xmm0,8 > + psrldq xmm8,8 > + pxor xmm0,xmm9 > + pshufd xmm4,xmm5,78 > + pxor xmm1,xmm8 > + pxor xmm4,xmm5 > + > + movdqa xmm9,xmm0 > + psrlq xmm0,1 > +DB 102,15,58,68,234,17 > + pxor xmm1,xmm9 > + pxor xmm9,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm9 > + lea r8,[32+r8] > + psrlq xmm0,1 > +DB 102,15,58,68,231,0 > + pxor xmm0,xmm1 > + > + sub r9,0x20 > + ja NEAR $L$mod_loop > + > +$L$even_tail: > + movdqa xmm1,xmm0 > + movdqa xmm8,xmm4 > + pshufd xmm4,xmm0,78 > + pxor xmm4,xmm0 > + > +DB 102,15,58,68,198,0 > +DB 102,15,58,68,206,17 > +DB 102,15,58,68,231,16 > + > + pxor xmm0,xmm3 > + pxor xmm1,xmm5 > + pxor xmm8,xmm0 > + pxor xmm8,xmm1 > + pxor xmm4,xmm8 > + movdqa xmm8,xmm4 > + psrldq xmm8,8 > + pslldq xmm4,8 > + pxor xmm1,xmm8 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > + test r9,r9 > + jnz NEAR $L$done > + > +$L$odd_tail: > + movdqu xmm8,XMMWORD[r8] > +DB 102,69,15,56,0,194 > + pxor xmm0,xmm8 > + movdqa xmm1,xmm0 > + pshufd xmm3,xmm0,78 > + pxor xmm3,xmm0 > +DB 102,15,58,68,194,0 > +DB 102,15,58,68,202,17 > +DB 102,15,58,68,223,0 > + pxor xmm3,xmm0 > + pxor xmm3,xmm1 > + > + movdqa xmm4,xmm3 > + psrldq xmm3,8 > + pslldq xmm4,8 > + pxor xmm1,xmm3 > + pxor xmm0,xmm4 > + > + movdqa xmm4,xmm0 > + movdqa xmm3,xmm0 > + psllq xmm0,5 > + pxor xmm3,xmm0 > + psllq xmm0,1 > + pxor xmm0,xmm3 > + psllq xmm0,57 > + movdqa xmm3,xmm0 > + pslldq xmm0,8 > + psrldq xmm3,8 > + pxor xmm0,xmm4 > + pxor xmm1,xmm3 > + > + > + movdqa xmm4,xmm0 > + psrlq xmm0,1 > + pxor xmm1,xmm4 > + pxor xmm4,xmm0 > + psrlq xmm0,5 > + pxor xmm0,xmm4 > + psrlq xmm0,1 > + pxor xmm0,xmm1 > +$L$done: > +DB 102,65,15,56,0,194 > + movdqu XMMWORD[rcx],xmm0 > + movaps xmm6,XMMWORD[rsp] > + movaps xmm7,XMMWORD[16+rsp] > + movaps xmm8,XMMWORD[32+rsp] > + movaps xmm9,XMMWORD[48+rsp] > + movaps xmm10,XMMWORD[64+rsp] > + movaps xmm11,XMMWORD[80+rsp] > + movaps xmm12,XMMWORD[96+rsp] > + movaps xmm13,XMMWORD[112+rsp] > + movaps xmm14,XMMWORD[128+rsp] > + movaps xmm15,XMMWORD[144+rsp] > + lea rsp,[168+rsp] > +$L$SEH_end_gcm_ghash_clmul: > + DB 0F3h,0C3h ;repret > + > + > +global gcm_init_avx > + > +ALIGN 32 > +gcm_init_avx: > + > + jmp NEAR $L$_init_clmul > + > + > +global gcm_gmult_avx > + > +ALIGN 32 > +gcm_gmult_avx: > + > + jmp NEAR $L$_gmult_clmul > + > + > +global gcm_ghash_avx > + > +ALIGN 32 > +gcm_ghash_avx: > + > + jmp NEAR $L$_ghash_clmul > + > + > +ALIGN 64 > +$L$bswap_mask: > +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 > +$L$0x1c2_polynomial: > +DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 > +$L$7_mask: > + DD 7,0,7,0 > +$L$7_mask_poly: > + DD 7,0,450,0 > +ALIGN 64 > + > +$L$rem_4bit: > + DD 0,0,0,471859200,0,943718400,0,610271232 > + DD 0,1887436800,0,1822425088,0,1220542464,0,1423966208 > + DD 0,3774873600,0,4246732800,0,3644850176,0,3311403008 > + DD 0,2441084928,0,2376073216,0,2847932416,0,3051356160 > + > +$L$rem_8bit: > + DW 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E > + DW 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E > + DW 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E > + DW 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E > + DW 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E > + DW 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E > + DW 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E > + DW 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E > + DW 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE > + DW 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE > + DW 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE > + DW 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE > + DW 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E > + DW 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E > + DW 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE > + DW 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE > + DW 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E > + DW 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E > + DW 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E > + DW 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E > + DW 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E > + DW 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E > + DW 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E > + DW 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E > + DW 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE > + DW 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE > + DW 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE > + DW 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE > + DW 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E > + DW 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E > + DW 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE > + DW 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE > + > +DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52 > +DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 > +DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 > +DB 114,103,62,0 > +ALIGN 64 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + lea rax,[((48+280))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov r15,QWORD[((-48))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + mov QWORD[240+r8],r15 > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_gcm_gmult_4bit wrt ..imagebase > + DD $L$SEH_end_gcm_gmult_4bit wrt ..imagebase > + DD $L$SEH_info_gcm_gmult_4bit wrt ..imagebase > + > + DD $L$SEH_begin_gcm_ghash_4bit wrt ..imagebase > + DD $L$SEH_end_gcm_ghash_4bit wrt ..imagebase > + DD $L$SEH_info_gcm_ghash_4bit wrt ..imagebase > + > + DD $L$SEH_begin_gcm_init_clmul wrt ..imagebase > + DD $L$SEH_end_gcm_init_clmul wrt ..imagebase > + DD $L$SEH_info_gcm_init_clmul wrt ..imagebase > + > + DD $L$SEH_begin_gcm_ghash_clmul wrt ..imagebase > + DD $L$SEH_end_gcm_ghash_clmul wrt ..imagebase > + DD $L$SEH_info_gcm_ghash_clmul wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_gcm_gmult_4bit: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue > wrt ..imagebase > +$L$SEH_info_gcm_ghash_4bit: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue > wrt ..imagebase > +$L$SEH_info_gcm_init_clmul: > +DB 0x01,0x08,0x03,0x00 > +DB 0x08,0x68,0x00,0x00 > +DB 0x04,0x22,0x00,0x00 > +$L$SEH_info_gcm_ghash_clmul: > +DB 0x01,0x33,0x16,0x00 > +DB 0x33,0xf8,0x09,0x00 > +DB 0x2e,0xe8,0x08,0x00 > +DB 0x29,0xd8,0x07,0x00 > +DB 0x24,0xc8,0x06,0x00 > +DB 0x1f,0xb8,0x05,0x00 > +DB 0x1a,0xa8,0x04,0x00 > +DB 0x15,0x98,0x03,0x00 > +DB 0x10,0x88,0x02,0x00 > +DB 0x0c,0x78,0x01,0x00 > +DB 0x08,0x68,0x00,0x00 > +DB 0x04,0x01,0x15,0x00 > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb- > x86_64.nasm > new file mode 100644 > index 0000000000..f3b7b0e35e > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm > @@ -0,0 +1,3137 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl > +; > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > + > +global sha1_multi_block > + > +ALIGN 32 > +sha1_multi_block: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha1_multi_block: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov rcx,QWORD[((OPENSSL_ia32cap_P+4))] > + bt rcx,61 > + jc NEAR _shaext_shortcut > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[(-120)+rax],xmm10 > + movaps XMMWORD[(-104)+rax],xmm11 > + movaps XMMWORD[(-88)+rax],xmm12 > + movaps XMMWORD[(-72)+rax],xmm13 > + movaps XMMWORD[(-56)+rax],xmm14 > + movaps XMMWORD[(-40)+rax],xmm15 > + sub rsp,288 > + and rsp,-256 > + mov QWORD[272+rsp],rax > + > +$L$body: > + lea rbp,[K_XX_XX] > + lea rbx,[256+rsp] > + > +$L$oop_grande: > + mov DWORD[280+rsp],edx > + xor edx,edx > + mov r8,QWORD[rsi] > + mov ecx,DWORD[8+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[rbx],ecx > + cmovle r8,rbp > + mov r9,QWORD[16+rsi] > + mov ecx,DWORD[24+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[4+rbx],ecx > + cmovle r9,rbp > + mov r10,QWORD[32+rsi] > + mov ecx,DWORD[40+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[8+rbx],ecx > + cmovle r10,rbp > + mov r11,QWORD[48+rsi] > + mov ecx,DWORD[56+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[12+rbx],ecx > + cmovle r11,rbp > + test edx,edx > + jz NEAR $L$done > + > + movdqu xmm10,XMMWORD[rdi] > + lea rax,[128+rsp] > + movdqu xmm11,XMMWORD[32+rdi] > + movdqu xmm12,XMMWORD[64+rdi] > + movdqu xmm13,XMMWORD[96+rdi] > + movdqu xmm14,XMMWORD[128+rdi] > + movdqa xmm5,XMMWORD[96+rbp] > + movdqa xmm15,XMMWORD[((-32))+rbp] > + jmp NEAR $L$oop > + > +ALIGN 32 > +$L$oop: > + movd xmm0,DWORD[r8] > + lea r8,[64+r8] > + movd xmm2,DWORD[r9] > + lea r9,[64+r9] > + movd xmm3,DWORD[r10] > + lea r10,[64+r10] > + movd xmm4,DWORD[r11] > + lea r11,[64+r11] > + punpckldq xmm0,xmm3 > + movd xmm1,DWORD[((-60))+r8] > + punpckldq xmm2,xmm4 > + movd xmm9,DWORD[((-60))+r9] > + punpckldq xmm0,xmm2 > + movd xmm8,DWORD[((-60))+r10] > +DB 102,15,56,0,197 > + movd xmm7,DWORD[((-60))+r11] > + punpckldq xmm1,xmm8 > + movdqa xmm8,xmm10 > + paddd xmm14,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm11 > + movdqa xmm6,xmm11 > + pslld xmm8,5 > + pandn xmm7,xmm13 > + pand xmm6,xmm12 > + punpckldq xmm1,xmm9 > + movdqa xmm9,xmm10 > + > + movdqa XMMWORD[(0-128)+rax],xmm0 > + paddd xmm14,xmm0 > + movd xmm2,DWORD[((-56))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm11 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-56))+r9] > + pslld xmm7,30 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > +DB 102,15,56,0,205 > + movd xmm8,DWORD[((-56))+r10] > + por xmm11,xmm7 > + movd xmm7,DWORD[((-56))+r11] > + punpckldq xmm2,xmm8 > + movdqa xmm8,xmm14 > + paddd xmm13,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm10 > + movdqa xmm6,xmm10 > + pslld xmm8,5 > + pandn xmm7,xmm12 > + pand xmm6,xmm11 > + punpckldq xmm2,xmm9 > + movdqa xmm9,xmm14 > + > + movdqa XMMWORD[(16-128)+rax],xmm1 > + paddd xmm13,xmm1 > + movd xmm3,DWORD[((-52))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm10 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-52))+r9] > + pslld xmm7,30 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > +DB 102,15,56,0,213 > + movd xmm8,DWORD[((-52))+r10] > + por xmm10,xmm7 > + movd xmm7,DWORD[((-52))+r11] > + punpckldq xmm3,xmm8 > + movdqa xmm8,xmm13 > + paddd xmm12,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm14 > + movdqa xmm6,xmm14 > + pslld xmm8,5 > + pandn xmm7,xmm11 > + pand xmm6,xmm10 > + punpckldq xmm3,xmm9 > + movdqa xmm9,xmm13 > + > + movdqa XMMWORD[(32-128)+rax],xmm2 > + paddd xmm12,xmm2 > + movd xmm4,DWORD[((-48))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm14 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-48))+r9] > + pslld xmm7,30 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > +DB 102,15,56,0,221 > + movd xmm8,DWORD[((-48))+r10] > + por xmm14,xmm7 > + movd xmm7,DWORD[((-48))+r11] > + punpckldq xmm4,xmm8 > + movdqa xmm8,xmm12 > + paddd xmm11,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm13 > + movdqa xmm6,xmm13 > + pslld xmm8,5 > + pandn xmm7,xmm10 > + pand xmm6,xmm14 > + punpckldq xmm4,xmm9 > + movdqa xmm9,xmm12 > + > + movdqa XMMWORD[(48-128)+rax],xmm3 > + paddd xmm11,xmm3 > + movd xmm0,DWORD[((-44))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm13 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-44))+r9] > + pslld xmm7,30 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > +DB 102,15,56,0,229 > + movd xmm8,DWORD[((-44))+r10] > + por xmm13,xmm7 > + movd xmm7,DWORD[((-44))+r11] > + punpckldq xmm0,xmm8 > + movdqa xmm8,xmm11 > + paddd xmm10,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm12 > + movdqa xmm6,xmm12 > + pslld xmm8,5 > + pandn xmm7,xmm14 > + pand xmm6,xmm13 > + punpckldq xmm0,xmm9 > + movdqa xmm9,xmm11 > + > + movdqa XMMWORD[(64-128)+rax],xmm4 > + paddd xmm10,xmm4 > + movd xmm1,DWORD[((-40))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm12 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-40))+r9] > + pslld xmm7,30 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > +DB 102,15,56,0,197 > + movd xmm8,DWORD[((-40))+r10] > + por xmm12,xmm7 > + movd xmm7,DWORD[((-40))+r11] > + punpckldq xmm1,xmm8 > + movdqa xmm8,xmm10 > + paddd xmm14,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm11 > + movdqa xmm6,xmm11 > + pslld xmm8,5 > + pandn xmm7,xmm13 > + pand xmm6,xmm12 > + punpckldq xmm1,xmm9 > + movdqa xmm9,xmm10 > + > + movdqa XMMWORD[(80-128)+rax],xmm0 > + paddd xmm14,xmm0 > + movd xmm2,DWORD[((-36))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm11 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-36))+r9] > + pslld xmm7,30 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > +DB 102,15,56,0,205 > + movd xmm8,DWORD[((-36))+r10] > + por xmm11,xmm7 > + movd xmm7,DWORD[((-36))+r11] > + punpckldq xmm2,xmm8 > + movdqa xmm8,xmm14 > + paddd xmm13,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm10 > + movdqa xmm6,xmm10 > + pslld xmm8,5 > + pandn xmm7,xmm12 > + pand xmm6,xmm11 > + punpckldq xmm2,xmm9 > + movdqa xmm9,xmm14 > + > + movdqa XMMWORD[(96-128)+rax],xmm1 > + paddd xmm13,xmm1 > + movd xmm3,DWORD[((-32))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm10 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-32))+r9] > + pslld xmm7,30 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > +DB 102,15,56,0,213 > + movd xmm8,DWORD[((-32))+r10] > + por xmm10,xmm7 > + movd xmm7,DWORD[((-32))+r11] > + punpckldq xmm3,xmm8 > + movdqa xmm8,xmm13 > + paddd xmm12,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm14 > + movdqa xmm6,xmm14 > + pslld xmm8,5 > + pandn xmm7,xmm11 > + pand xmm6,xmm10 > + punpckldq xmm3,xmm9 > + movdqa xmm9,xmm13 > + > + movdqa XMMWORD[(112-128)+rax],xmm2 > + paddd xmm12,xmm2 > + movd xmm4,DWORD[((-28))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm14 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-28))+r9] > + pslld xmm7,30 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > +DB 102,15,56,0,221 > + movd xmm8,DWORD[((-28))+r10] > + por xmm14,xmm7 > + movd xmm7,DWORD[((-28))+r11] > + punpckldq xmm4,xmm8 > + movdqa xmm8,xmm12 > + paddd xmm11,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm13 > + movdqa xmm6,xmm13 > + pslld xmm8,5 > + pandn xmm7,xmm10 > + pand xmm6,xmm14 > + punpckldq xmm4,xmm9 > + movdqa xmm9,xmm12 > + > + movdqa XMMWORD[(128-128)+rax],xmm3 > + paddd xmm11,xmm3 > + movd xmm0,DWORD[((-24))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm13 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-24))+r9] > + pslld xmm7,30 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > +DB 102,15,56,0,229 > + movd xmm8,DWORD[((-24))+r10] > + por xmm13,xmm7 > + movd xmm7,DWORD[((-24))+r11] > + punpckldq xmm0,xmm8 > + movdqa xmm8,xmm11 > + paddd xmm10,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm12 > + movdqa xmm6,xmm12 > + pslld xmm8,5 > + pandn xmm7,xmm14 > + pand xmm6,xmm13 > + punpckldq xmm0,xmm9 > + movdqa xmm9,xmm11 > + > + movdqa XMMWORD[(144-128)+rax],xmm4 > + paddd xmm10,xmm4 > + movd xmm1,DWORD[((-20))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm12 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-20))+r9] > + pslld xmm7,30 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > +DB 102,15,56,0,197 > + movd xmm8,DWORD[((-20))+r10] > + por xmm12,xmm7 > + movd xmm7,DWORD[((-20))+r11] > + punpckldq xmm1,xmm8 > + movdqa xmm8,xmm10 > + paddd xmm14,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm11 > + movdqa xmm6,xmm11 > + pslld xmm8,5 > + pandn xmm7,xmm13 > + pand xmm6,xmm12 > + punpckldq xmm1,xmm9 > + movdqa xmm9,xmm10 > + > + movdqa XMMWORD[(160-128)+rax],xmm0 > + paddd xmm14,xmm0 > + movd xmm2,DWORD[((-16))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm11 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-16))+r9] > + pslld xmm7,30 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > +DB 102,15,56,0,205 > + movd xmm8,DWORD[((-16))+r10] > + por xmm11,xmm7 > + movd xmm7,DWORD[((-16))+r11] > + punpckldq xmm2,xmm8 > + movdqa xmm8,xmm14 > + paddd xmm13,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm10 > + movdqa xmm6,xmm10 > + pslld xmm8,5 > + pandn xmm7,xmm12 > + pand xmm6,xmm11 > + punpckldq xmm2,xmm9 > + movdqa xmm9,xmm14 > + > + movdqa XMMWORD[(176-128)+rax],xmm1 > + paddd xmm13,xmm1 > + movd xmm3,DWORD[((-12))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm10 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-12))+r9] > + pslld xmm7,30 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > +DB 102,15,56,0,213 > + movd xmm8,DWORD[((-12))+r10] > + por xmm10,xmm7 > + movd xmm7,DWORD[((-12))+r11] > + punpckldq xmm3,xmm8 > + movdqa xmm8,xmm13 > + paddd xmm12,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm14 > + movdqa xmm6,xmm14 > + pslld xmm8,5 > + pandn xmm7,xmm11 > + pand xmm6,xmm10 > + punpckldq xmm3,xmm9 > + movdqa xmm9,xmm13 > + > + movdqa XMMWORD[(192-128)+rax],xmm2 > + paddd xmm12,xmm2 > + movd xmm4,DWORD[((-8))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm14 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-8))+r9] > + pslld xmm7,30 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > +DB 102,15,56,0,221 > + movd xmm8,DWORD[((-8))+r10] > + por xmm14,xmm7 > + movd xmm7,DWORD[((-8))+r11] > + punpckldq xmm4,xmm8 > + movdqa xmm8,xmm12 > + paddd xmm11,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm13 > + movdqa xmm6,xmm13 > + pslld xmm8,5 > + pandn xmm7,xmm10 > + pand xmm6,xmm14 > + punpckldq xmm4,xmm9 > + movdqa xmm9,xmm12 > + > + movdqa XMMWORD[(208-128)+rax],xmm3 > + paddd xmm11,xmm3 > + movd xmm0,DWORD[((-4))+r8] > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm13 > + > + por xmm8,xmm9 > + movd xmm9,DWORD[((-4))+r9] > + pslld xmm7,30 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > +DB 102,15,56,0,229 > + movd xmm8,DWORD[((-4))+r10] > + por xmm13,xmm7 > + movdqa xmm1,XMMWORD[((0-128))+rax] > + movd xmm7,DWORD[((-4))+r11] > + punpckldq xmm0,xmm8 > + movdqa xmm8,xmm11 > + paddd xmm10,xmm15 > + punpckldq xmm9,xmm7 > + movdqa xmm7,xmm12 > + movdqa xmm6,xmm12 > + pslld xmm8,5 > + prefetcht0 [63+r8] > + pandn xmm7,xmm14 > + pand xmm6,xmm13 > + punpckldq xmm0,xmm9 > + movdqa xmm9,xmm11 > + > + movdqa XMMWORD[(224-128)+rax],xmm4 > + paddd xmm10,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + movdqa xmm7,xmm12 > + prefetcht0 [63+r9] > + > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm10,xmm6 > + prefetcht0 [63+r10] > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > +DB 102,15,56,0,197 > + prefetcht0 [63+r11] > + por xmm12,xmm7 > + movdqa xmm2,XMMWORD[((16-128))+rax] > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((32-128))+rax] > + > + movdqa xmm8,xmm10 > + pxor xmm1,XMMWORD[((128-128))+rax] > + paddd xmm14,xmm15 > + movdqa xmm7,xmm11 > + pslld xmm8,5 > + pxor xmm1,xmm3 > + movdqa xmm6,xmm11 > + pandn xmm7,xmm13 > + movdqa xmm5,xmm1 > + pand xmm6,xmm12 > + movdqa xmm9,xmm10 > + psrld xmm5,31 > + paddd xmm1,xmm1 > + > + movdqa XMMWORD[(240-128)+rax],xmm0 > + paddd xmm14,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + > + movdqa xmm7,xmm11 > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((48-128))+rax] > + > + movdqa xmm8,xmm14 > + pxor xmm2,XMMWORD[((144-128))+rax] > + paddd xmm13,xmm15 > + movdqa xmm7,xmm10 > + pslld xmm8,5 > + pxor xmm2,xmm4 > + movdqa xmm6,xmm10 > + pandn xmm7,xmm12 > + movdqa xmm5,xmm2 > + pand xmm6,xmm11 > + movdqa xmm9,xmm14 > + psrld xmm5,31 > + paddd xmm2,xmm2 > + > + movdqa XMMWORD[(0-128)+rax],xmm1 > + paddd xmm13,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + > + movdqa xmm7,xmm10 > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((64-128))+rax] > + > + movdqa xmm8,xmm13 > + pxor xmm3,XMMWORD[((160-128))+rax] > + paddd xmm12,xmm15 > + movdqa xmm7,xmm14 > + pslld xmm8,5 > + pxor xmm3,xmm0 > + movdqa xmm6,xmm14 > + pandn xmm7,xmm11 > + movdqa xmm5,xmm3 > + pand xmm6,xmm10 > + movdqa xmm9,xmm13 > + psrld xmm5,31 > + paddd xmm3,xmm3 > + > + movdqa XMMWORD[(16-128)+rax],xmm2 > + paddd xmm12,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + > + movdqa xmm7,xmm14 > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((80-128))+rax] > + > + movdqa xmm8,xmm12 > + pxor xmm4,XMMWORD[((176-128))+rax] > + paddd xmm11,xmm15 > + movdqa xmm7,xmm13 > + pslld xmm8,5 > + pxor xmm4,xmm1 > + movdqa xmm6,xmm13 > + pandn xmm7,xmm10 > + movdqa xmm5,xmm4 > + pand xmm6,xmm14 > + movdqa xmm9,xmm12 > + psrld xmm5,31 > + paddd xmm4,xmm4 > + > + movdqa XMMWORD[(32-128)+rax],xmm3 > + paddd xmm11,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + > + movdqa xmm7,xmm13 > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((96-128))+rax] > + > + movdqa xmm8,xmm11 > + pxor xmm0,XMMWORD[((192-128))+rax] > + paddd xmm10,xmm15 > + movdqa xmm7,xmm12 > + pslld xmm8,5 > + pxor xmm0,xmm2 > + movdqa xmm6,xmm12 > + pandn xmm7,xmm14 > + movdqa xmm5,xmm0 > + pand xmm6,xmm13 > + movdqa xmm9,xmm11 > + psrld xmm5,31 > + paddd xmm0,xmm0 > + > + movdqa XMMWORD[(48-128)+rax],xmm4 > + paddd xmm10,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm7 > + > + movdqa xmm7,xmm12 > + por xmm8,xmm9 > + pslld xmm7,30 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + movdqa xmm15,XMMWORD[rbp] > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((112-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((208-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(64-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((128-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((224-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(80-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((144-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((240-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(96-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((160-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((0-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(112-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((176-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((16-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(128-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((192-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((32-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(144-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((208-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((48-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(160-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((224-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((64-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(176-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((240-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((80-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(192-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((0-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((96-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(208-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((16-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((112-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(224-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((32-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((128-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(240-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((48-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((144-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(0-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((64-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((160-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(16-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((80-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((176-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(32-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((96-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((192-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(48-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((112-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((208-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(64-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((128-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((224-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(80-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((144-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((240-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(96-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((160-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((0-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(112-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + movdqa xmm15,XMMWORD[32+rbp] > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((176-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm7,xmm13 > + pxor xmm1,XMMWORD[((16-128))+rax] > + pxor xmm1,xmm3 > + paddd xmm14,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm10 > + pand xmm7,xmm12 > + > + movdqa xmm6,xmm13 > + movdqa xmm5,xmm1 > + psrld xmm9,27 > + paddd xmm14,xmm7 > + pxor xmm6,xmm12 > + > + movdqa XMMWORD[(128-128)+rax],xmm0 > + paddd xmm14,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm11 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + paddd xmm1,xmm1 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((192-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm7,xmm12 > + pxor xmm2,XMMWORD[((32-128))+rax] > + pxor xmm2,xmm4 > + paddd xmm13,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm14 > + pand xmm7,xmm11 > + > + movdqa xmm6,xmm12 > + movdqa xmm5,xmm2 > + psrld xmm9,27 > + paddd xmm13,xmm7 > + pxor xmm6,xmm11 > + > + movdqa XMMWORD[(144-128)+rax],xmm1 > + paddd xmm13,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm10 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + paddd xmm2,xmm2 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((208-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm7,xmm11 > + pxor xmm3,XMMWORD[((48-128))+rax] > + pxor xmm3,xmm0 > + paddd xmm12,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm13 > + pand xmm7,xmm10 > + > + movdqa xmm6,xmm11 > + movdqa xmm5,xmm3 > + psrld xmm9,27 > + paddd xmm12,xmm7 > + pxor xmm6,xmm10 > + > + movdqa XMMWORD[(160-128)+rax],xmm2 > + paddd xmm12,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm14 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + paddd xmm3,xmm3 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((224-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm7,xmm10 > + pxor xmm4,XMMWORD[((64-128))+rax] > + pxor xmm4,xmm1 > + paddd xmm11,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm12 > + pand xmm7,xmm14 > + > + movdqa xmm6,xmm10 > + movdqa xmm5,xmm4 > + psrld xmm9,27 > + paddd xmm11,xmm7 > + pxor xmm6,xmm14 > + > + movdqa XMMWORD[(176-128)+rax],xmm3 > + paddd xmm11,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm13 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + paddd xmm4,xmm4 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((240-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm7,xmm14 > + pxor xmm0,XMMWORD[((80-128))+rax] > + pxor xmm0,xmm2 > + paddd xmm10,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm11 > + pand xmm7,xmm13 > + > + movdqa xmm6,xmm14 > + movdqa xmm5,xmm0 > + psrld xmm9,27 > + paddd xmm10,xmm7 > + pxor xmm6,xmm13 > + > + movdqa XMMWORD[(192-128)+rax],xmm4 > + paddd xmm10,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm12 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + paddd xmm0,xmm0 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((0-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm7,xmm13 > + pxor xmm1,XMMWORD[((96-128))+rax] > + pxor xmm1,xmm3 > + paddd xmm14,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm10 > + pand xmm7,xmm12 > + > + movdqa xmm6,xmm13 > + movdqa xmm5,xmm1 > + psrld xmm9,27 > + paddd xmm14,xmm7 > + pxor xmm6,xmm12 > + > + movdqa XMMWORD[(208-128)+rax],xmm0 > + paddd xmm14,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm11 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + paddd xmm1,xmm1 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((16-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm7,xmm12 > + pxor xmm2,XMMWORD[((112-128))+rax] > + pxor xmm2,xmm4 > + paddd xmm13,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm14 > + pand xmm7,xmm11 > + > + movdqa xmm6,xmm12 > + movdqa xmm5,xmm2 > + psrld xmm9,27 > + paddd xmm13,xmm7 > + pxor xmm6,xmm11 > + > + movdqa XMMWORD[(224-128)+rax],xmm1 > + paddd xmm13,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm10 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + paddd xmm2,xmm2 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((32-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm7,xmm11 > + pxor xmm3,XMMWORD[((128-128))+rax] > + pxor xmm3,xmm0 > + paddd xmm12,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm13 > + pand xmm7,xmm10 > + > + movdqa xmm6,xmm11 > + movdqa xmm5,xmm3 > + psrld xmm9,27 > + paddd xmm12,xmm7 > + pxor xmm6,xmm10 > + > + movdqa XMMWORD[(240-128)+rax],xmm2 > + paddd xmm12,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm14 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + paddd xmm3,xmm3 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((48-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm7,xmm10 > + pxor xmm4,XMMWORD[((144-128))+rax] > + pxor xmm4,xmm1 > + paddd xmm11,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm12 > + pand xmm7,xmm14 > + > + movdqa xmm6,xmm10 > + movdqa xmm5,xmm4 > + psrld xmm9,27 > + paddd xmm11,xmm7 > + pxor xmm6,xmm14 > + > + movdqa XMMWORD[(0-128)+rax],xmm3 > + paddd xmm11,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm13 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + paddd xmm4,xmm4 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((64-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm7,xmm14 > + pxor xmm0,XMMWORD[((160-128))+rax] > + pxor xmm0,xmm2 > + paddd xmm10,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm11 > + pand xmm7,xmm13 > + > + movdqa xmm6,xmm14 > + movdqa xmm5,xmm0 > + psrld xmm9,27 > + paddd xmm10,xmm7 > + pxor xmm6,xmm13 > + > + movdqa XMMWORD[(16-128)+rax],xmm4 > + paddd xmm10,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm12 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + paddd xmm0,xmm0 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((80-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm7,xmm13 > + pxor xmm1,XMMWORD[((176-128))+rax] > + pxor xmm1,xmm3 > + paddd xmm14,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm10 > + pand xmm7,xmm12 > + > + movdqa xmm6,xmm13 > + movdqa xmm5,xmm1 > + psrld xmm9,27 > + paddd xmm14,xmm7 > + pxor xmm6,xmm12 > + > + movdqa XMMWORD[(32-128)+rax],xmm0 > + paddd xmm14,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm11 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + paddd xmm1,xmm1 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((96-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm7,xmm12 > + pxor xmm2,XMMWORD[((192-128))+rax] > + pxor xmm2,xmm4 > + paddd xmm13,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm14 > + pand xmm7,xmm11 > + > + movdqa xmm6,xmm12 > + movdqa xmm5,xmm2 > + psrld xmm9,27 > + paddd xmm13,xmm7 > + pxor xmm6,xmm11 > + > + movdqa XMMWORD[(48-128)+rax],xmm1 > + paddd xmm13,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm10 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + paddd xmm2,xmm2 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((112-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm7,xmm11 > + pxor xmm3,XMMWORD[((208-128))+rax] > + pxor xmm3,xmm0 > + paddd xmm12,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm13 > + pand xmm7,xmm10 > + > + movdqa xmm6,xmm11 > + movdqa xmm5,xmm3 > + psrld xmm9,27 > + paddd xmm12,xmm7 > + pxor xmm6,xmm10 > + > + movdqa XMMWORD[(64-128)+rax],xmm2 > + paddd xmm12,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm14 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + paddd xmm3,xmm3 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((128-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm7,xmm10 > + pxor xmm4,XMMWORD[((224-128))+rax] > + pxor xmm4,xmm1 > + paddd xmm11,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm12 > + pand xmm7,xmm14 > + > + movdqa xmm6,xmm10 > + movdqa xmm5,xmm4 > + psrld xmm9,27 > + paddd xmm11,xmm7 > + pxor xmm6,xmm14 > + > + movdqa XMMWORD[(80-128)+rax],xmm3 > + paddd xmm11,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm13 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + paddd xmm4,xmm4 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((144-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm7,xmm14 > + pxor xmm0,XMMWORD[((240-128))+rax] > + pxor xmm0,xmm2 > + paddd xmm10,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm11 > + pand xmm7,xmm13 > + > + movdqa xmm6,xmm14 > + movdqa xmm5,xmm0 > + psrld xmm9,27 > + paddd xmm10,xmm7 > + pxor xmm6,xmm13 > + > + movdqa XMMWORD[(96-128)+rax],xmm4 > + paddd xmm10,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm12 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + paddd xmm0,xmm0 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((160-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm7,xmm13 > + pxor xmm1,XMMWORD[((0-128))+rax] > + pxor xmm1,xmm3 > + paddd xmm14,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm10 > + pand xmm7,xmm12 > + > + movdqa xmm6,xmm13 > + movdqa xmm5,xmm1 > + psrld xmm9,27 > + paddd xmm14,xmm7 > + pxor xmm6,xmm12 > + > + movdqa XMMWORD[(112-128)+rax],xmm0 > + paddd xmm14,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm11 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + paddd xmm1,xmm1 > + paddd xmm14,xmm6 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((176-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm7,xmm12 > + pxor xmm2,XMMWORD[((16-128))+rax] > + pxor xmm2,xmm4 > + paddd xmm13,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm14 > + pand xmm7,xmm11 > + > + movdqa xmm6,xmm12 > + movdqa xmm5,xmm2 > + psrld xmm9,27 > + paddd xmm13,xmm7 > + pxor xmm6,xmm11 > + > + movdqa XMMWORD[(128-128)+rax],xmm1 > + paddd xmm13,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm10 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + paddd xmm2,xmm2 > + paddd xmm13,xmm6 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((192-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm7,xmm11 > + pxor xmm3,XMMWORD[((32-128))+rax] > + pxor xmm3,xmm0 > + paddd xmm12,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm13 > + pand xmm7,xmm10 > + > + movdqa xmm6,xmm11 > + movdqa xmm5,xmm3 > + psrld xmm9,27 > + paddd xmm12,xmm7 > + pxor xmm6,xmm10 > + > + movdqa XMMWORD[(144-128)+rax],xmm2 > + paddd xmm12,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm14 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + paddd xmm3,xmm3 > + paddd xmm12,xmm6 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((208-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm7,xmm10 > + pxor xmm4,XMMWORD[((48-128))+rax] > + pxor xmm4,xmm1 > + paddd xmm11,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm12 > + pand xmm7,xmm14 > + > + movdqa xmm6,xmm10 > + movdqa xmm5,xmm4 > + psrld xmm9,27 > + paddd xmm11,xmm7 > + pxor xmm6,xmm14 > + > + movdqa XMMWORD[(160-128)+rax],xmm3 > + paddd xmm11,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm13 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + paddd xmm4,xmm4 > + paddd xmm11,xmm6 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((224-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm7,xmm14 > + pxor xmm0,XMMWORD[((64-128))+rax] > + pxor xmm0,xmm2 > + paddd xmm10,xmm15 > + pslld xmm8,5 > + movdqa xmm9,xmm11 > + pand xmm7,xmm13 > + > + movdqa xmm6,xmm14 > + movdqa xmm5,xmm0 > + psrld xmm9,27 > + paddd xmm10,xmm7 > + pxor xmm6,xmm13 > + > + movdqa XMMWORD[(176-128)+rax],xmm4 > + paddd xmm10,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + pand xmm6,xmm12 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + paddd xmm0,xmm0 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + movdqa xmm15,XMMWORD[64+rbp] > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((240-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((80-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(192-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((0-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((96-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(208-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((16-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((112-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(224-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((32-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((128-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(240-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((48-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((144-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(0-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((64-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((160-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(16-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((80-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((176-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(32-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((96-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((192-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + movdqa XMMWORD[(48-128)+rax],xmm2 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((112-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((208-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + movdqa XMMWORD[(64-128)+rax],xmm3 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((128-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((224-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + movdqa XMMWORD[(80-128)+rax],xmm4 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((144-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((240-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + movdqa XMMWORD[(96-128)+rax],xmm0 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((160-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((0-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + movdqa XMMWORD[(112-128)+rax],xmm1 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((176-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((16-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((192-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((32-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + pxor xmm0,xmm2 > + movdqa xmm2,XMMWORD[((208-128))+rax] > + > + movdqa xmm8,xmm11 > + movdqa xmm6,xmm14 > + pxor xmm0,XMMWORD[((48-128))+rax] > + paddd xmm10,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + paddd xmm10,xmm4 > + pxor xmm0,xmm2 > + psrld xmm9,27 > + pxor xmm6,xmm13 > + movdqa xmm7,xmm12 > + > + pslld xmm7,30 > + movdqa xmm5,xmm0 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm10,xmm6 > + paddd xmm0,xmm0 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm0,xmm5 > + por xmm12,xmm7 > + pxor xmm1,xmm3 > + movdqa xmm3,XMMWORD[((224-128))+rax] > + > + movdqa xmm8,xmm10 > + movdqa xmm6,xmm13 > + pxor xmm1,XMMWORD[((64-128))+rax] > + paddd xmm14,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm11 > + > + movdqa xmm9,xmm10 > + paddd xmm14,xmm0 > + pxor xmm1,xmm3 > + psrld xmm9,27 > + pxor xmm6,xmm12 > + movdqa xmm7,xmm11 > + > + pslld xmm7,30 > + movdqa xmm5,xmm1 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm14,xmm6 > + paddd xmm1,xmm1 > + > + psrld xmm11,2 > + paddd xmm14,xmm8 > + por xmm1,xmm5 > + por xmm11,xmm7 > + pxor xmm2,xmm4 > + movdqa xmm4,XMMWORD[((240-128))+rax] > + > + movdqa xmm8,xmm14 > + movdqa xmm6,xmm12 > + pxor xmm2,XMMWORD[((80-128))+rax] > + paddd xmm13,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm10 > + > + movdqa xmm9,xmm14 > + paddd xmm13,xmm1 > + pxor xmm2,xmm4 > + psrld xmm9,27 > + pxor xmm6,xmm11 > + movdqa xmm7,xmm10 > + > + pslld xmm7,30 > + movdqa xmm5,xmm2 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm13,xmm6 > + paddd xmm2,xmm2 > + > + psrld xmm10,2 > + paddd xmm13,xmm8 > + por xmm2,xmm5 > + por xmm10,xmm7 > + pxor xmm3,xmm0 > + movdqa xmm0,XMMWORD[((0-128))+rax] > + > + movdqa xmm8,xmm13 > + movdqa xmm6,xmm11 > + pxor xmm3,XMMWORD[((96-128))+rax] > + paddd xmm12,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm14 > + > + movdqa xmm9,xmm13 > + paddd xmm12,xmm2 > + pxor xmm3,xmm0 > + psrld xmm9,27 > + pxor xmm6,xmm10 > + movdqa xmm7,xmm14 > + > + pslld xmm7,30 > + movdqa xmm5,xmm3 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm12,xmm6 > + paddd xmm3,xmm3 > + > + psrld xmm14,2 > + paddd xmm12,xmm8 > + por xmm3,xmm5 > + por xmm14,xmm7 > + pxor xmm4,xmm1 > + movdqa xmm1,XMMWORD[((16-128))+rax] > + > + movdqa xmm8,xmm12 > + movdqa xmm6,xmm10 > + pxor xmm4,XMMWORD[((112-128))+rax] > + paddd xmm11,xmm15 > + pslld xmm8,5 > + pxor xmm6,xmm13 > + > + movdqa xmm9,xmm12 > + paddd xmm11,xmm3 > + pxor xmm4,xmm1 > + psrld xmm9,27 > + pxor xmm6,xmm14 > + movdqa xmm7,xmm13 > + > + pslld xmm7,30 > + movdqa xmm5,xmm4 > + por xmm8,xmm9 > + psrld xmm5,31 > + paddd xmm11,xmm6 > + paddd xmm4,xmm4 > + > + psrld xmm13,2 > + paddd xmm11,xmm8 > + por xmm4,xmm5 > + por xmm13,xmm7 > + movdqa xmm8,xmm11 > + paddd xmm10,xmm15 > + movdqa xmm6,xmm14 > + pslld xmm8,5 > + pxor xmm6,xmm12 > + > + movdqa xmm9,xmm11 > + paddd xmm10,xmm4 > + psrld xmm9,27 > + movdqa xmm7,xmm12 > + pxor xmm6,xmm13 > + > + pslld xmm7,30 > + por xmm8,xmm9 > + paddd xmm10,xmm6 > + > + psrld xmm12,2 > + paddd xmm10,xmm8 > + por xmm12,xmm7 > + movdqa xmm0,XMMWORD[rbx] > + mov ecx,1 > + cmp ecx,DWORD[rbx] > + pxor xmm8,xmm8 > + cmovge r8,rbp > + cmp ecx,DWORD[4+rbx] > + movdqa xmm1,xmm0 > + cmovge r9,rbp > + cmp ecx,DWORD[8+rbx] > + pcmpgtd xmm1,xmm8 > + cmovge r10,rbp > + cmp ecx,DWORD[12+rbx] > + paddd xmm0,xmm1 > + cmovge r11,rbp > + > + movdqu xmm6,XMMWORD[rdi] > + pand xmm10,xmm1 > + movdqu xmm7,XMMWORD[32+rdi] > + pand xmm11,xmm1 > + paddd xmm10,xmm6 > + movdqu xmm8,XMMWORD[64+rdi] > + pand xmm12,xmm1 > + paddd xmm11,xmm7 > + movdqu xmm9,XMMWORD[96+rdi] > + pand xmm13,xmm1 > + paddd xmm12,xmm8 > + movdqu xmm5,XMMWORD[128+rdi] > + pand xmm14,xmm1 > + movdqu XMMWORD[rdi],xmm10 > + paddd xmm13,xmm9 > + movdqu XMMWORD[32+rdi],xmm11 > + paddd xmm14,xmm5 > + movdqu XMMWORD[64+rdi],xmm12 > + movdqu XMMWORD[96+rdi],xmm13 > + movdqu XMMWORD[128+rdi],xmm14 > + > + movdqa XMMWORD[rbx],xmm0 > + movdqa xmm5,XMMWORD[96+rbp] > + movdqa xmm15,XMMWORD[((-32))+rbp] > + dec edx > + jnz NEAR $L$oop > + > + mov edx,DWORD[280+rsp] > + lea rdi,[16+rdi] > + lea rsi,[64+rsi] > + dec edx > + jnz NEAR $L$oop_grande > + > +$L$done: > + mov rax,QWORD[272+rsp] > + > + movaps xmm6,XMMWORD[((-184))+rax] > + movaps xmm7,XMMWORD[((-168))+rax] > + movaps xmm8,XMMWORD[((-152))+rax] > + movaps xmm9,XMMWORD[((-136))+rax] > + movaps xmm10,XMMWORD[((-120))+rax] > + movaps xmm11,XMMWORD[((-104))+rax] > + movaps xmm12,XMMWORD[((-88))+rax] > + movaps xmm13,XMMWORD[((-72))+rax] > + movaps xmm14,XMMWORD[((-56))+rax] > + movaps xmm15,XMMWORD[((-40))+rax] > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha1_multi_block: > + > +ALIGN 32 > +sha1_multi_block_shaext: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha1_multi_block_shaext: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > +_shaext_shortcut: > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[(-120)+rax],xmm10 > + movaps XMMWORD[(-104)+rax],xmm11 > + movaps XMMWORD[(-88)+rax],xmm12 > + movaps XMMWORD[(-72)+rax],xmm13 > + movaps XMMWORD[(-56)+rax],xmm14 > + movaps XMMWORD[(-40)+rax],xmm15 > + sub rsp,288 > + shl edx,1 > + and rsp,-256 > + lea rdi,[64+rdi] > + mov QWORD[272+rsp],rax > +$L$body_shaext: > + lea rbx,[256+rsp] > + movdqa xmm3,XMMWORD[((K_XX_XX+128))] > + > +$L$oop_grande_shaext: > + mov DWORD[280+rsp],edx > + xor edx,edx > + mov r8,QWORD[rsi] > + mov ecx,DWORD[8+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[rbx],ecx > + cmovle r8,rsp > + mov r9,QWORD[16+rsi] > + mov ecx,DWORD[24+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[4+rbx],ecx > + cmovle r9,rsp > + test edx,edx > + jz NEAR $L$done_shaext > + > + movq xmm0,QWORD[((0-64))+rdi] > + movq xmm4,QWORD[((32-64))+rdi] > + movq xmm5,QWORD[((64-64))+rdi] > + movq xmm6,QWORD[((96-64))+rdi] > + movq xmm7,QWORD[((128-64))+rdi] > + > + punpckldq xmm0,xmm4 > + punpckldq xmm5,xmm6 > + > + movdqa xmm8,xmm0 > + punpcklqdq xmm0,xmm5 > + punpckhqdq xmm8,xmm5 > + > + pshufd xmm1,xmm7,63 > + pshufd xmm9,xmm7,127 > + pshufd xmm0,xmm0,27 > + pshufd xmm8,xmm8,27 > + jmp NEAR $L$oop_shaext > + > +ALIGN 32 > +$L$oop_shaext: > + movdqu xmm4,XMMWORD[r8] > + movdqu xmm11,XMMWORD[r9] > + movdqu xmm5,XMMWORD[16+r8] > + movdqu xmm12,XMMWORD[16+r9] > + movdqu xmm6,XMMWORD[32+r8] > +DB 102,15,56,0,227 > + movdqu xmm13,XMMWORD[32+r9] > +DB 102,68,15,56,0,219 > + movdqu xmm7,XMMWORD[48+r8] > + lea r8,[64+r8] > +DB 102,15,56,0,235 > + movdqu xmm14,XMMWORD[48+r9] > + lea r9,[64+r9] > +DB 102,68,15,56,0,227 > + > + movdqa XMMWORD[80+rsp],xmm1 > + paddd xmm1,xmm4 > + movdqa XMMWORD[112+rsp],xmm9 > + paddd xmm9,xmm11 > + movdqa XMMWORD[64+rsp],xmm0 > + movdqa xmm2,xmm0 > + movdqa XMMWORD[96+rsp],xmm8 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,0 > +DB 15,56,200,213 > +DB 69,15,58,204,193,0 > +DB 69,15,56,200,212 > +DB 102,15,56,0,243 > + prefetcht0 [127+r8] > +DB 15,56,201,229 > +DB 102,68,15,56,0,235 > + prefetcht0 [127+r9] > +DB 69,15,56,201,220 > + > +DB 102,15,56,0,251 > + movdqa xmm1,xmm0 > +DB 102,68,15,56,0,243 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,0 > +DB 15,56,200,206 > +DB 69,15,58,204,194,0 > +DB 69,15,56,200,205 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + pxor xmm11,xmm13 > +DB 69,15,56,201,229 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,0 > +DB 15,56,200,215 > +DB 69,15,58,204,193,0 > +DB 69,15,56,200,214 > +DB 15,56,202,231 > +DB 69,15,56,202,222 > + pxor xmm5,xmm7 > +DB 15,56,201,247 > + pxor xmm12,xmm14 > +DB 69,15,56,201,238 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,0 > +DB 15,56,200,204 > +DB 69,15,58,204,194,0 > +DB 69,15,56,200,203 > +DB 15,56,202,236 > +DB 69,15,56,202,227 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > + pxor xmm13,xmm11 > +DB 69,15,56,201,243 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,0 > +DB 15,56,200,213 > +DB 69,15,58,204,193,0 > +DB 69,15,56,200,212 > +DB 15,56,202,245 > +DB 69,15,56,202,236 > + pxor xmm7,xmm5 > +DB 15,56,201,229 > + pxor xmm14,xmm12 > +DB 69,15,56,201,220 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,1 > +DB 15,56,200,206 > +DB 69,15,58,204,194,1 > +DB 69,15,56,200,205 > +DB 15,56,202,254 > +DB 69,15,56,202,245 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + pxor xmm11,xmm13 > +DB 69,15,56,201,229 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,1 > +DB 15,56,200,215 > +DB 69,15,58,204,193,1 > +DB 69,15,56,200,214 > +DB 15,56,202,231 > +DB 69,15,56,202,222 > + pxor xmm5,xmm7 > +DB 15,56,201,247 > + pxor xmm12,xmm14 > +DB 69,15,56,201,238 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,1 > +DB 15,56,200,204 > +DB 69,15,58,204,194,1 > +DB 69,15,56,200,203 > +DB 15,56,202,236 > +DB 69,15,56,202,227 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > + pxor xmm13,xmm11 > +DB 69,15,56,201,243 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,1 > +DB 15,56,200,213 > +DB 69,15,58,204,193,1 > +DB 69,15,56,200,212 > +DB 15,56,202,245 > +DB 69,15,56,202,236 > + pxor xmm7,xmm5 > +DB 15,56,201,229 > + pxor xmm14,xmm12 > +DB 69,15,56,201,220 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,1 > +DB 15,56,200,206 > +DB 69,15,58,204,194,1 > +DB 69,15,56,200,205 > +DB 15,56,202,254 > +DB 69,15,56,202,245 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + pxor xmm11,xmm13 > +DB 69,15,56,201,229 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,2 > +DB 15,56,200,215 > +DB 69,15,58,204,193,2 > +DB 69,15,56,200,214 > +DB 15,56,202,231 > +DB 69,15,56,202,222 > + pxor xmm5,xmm7 > +DB 15,56,201,247 > + pxor xmm12,xmm14 > +DB 69,15,56,201,238 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,2 > +DB 15,56,200,204 > +DB 69,15,58,204,194,2 > +DB 69,15,56,200,203 > +DB 15,56,202,236 > +DB 69,15,56,202,227 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > + pxor xmm13,xmm11 > +DB 69,15,56,201,243 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,2 > +DB 15,56,200,213 > +DB 69,15,58,204,193,2 > +DB 69,15,56,200,212 > +DB 15,56,202,245 > +DB 69,15,56,202,236 > + pxor xmm7,xmm5 > +DB 15,56,201,229 > + pxor xmm14,xmm12 > +DB 69,15,56,201,220 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,2 > +DB 15,56,200,206 > +DB 69,15,58,204,194,2 > +DB 69,15,56,200,205 > +DB 15,56,202,254 > +DB 69,15,56,202,245 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > + pxor xmm11,xmm13 > +DB 69,15,56,201,229 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,2 > +DB 15,56,200,215 > +DB 69,15,58,204,193,2 > +DB 69,15,56,200,214 > +DB 15,56,202,231 > +DB 69,15,56,202,222 > + pxor xmm5,xmm7 > +DB 15,56,201,247 > + pxor xmm12,xmm14 > +DB 69,15,56,201,238 > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,3 > +DB 15,56,200,204 > +DB 69,15,58,204,194,3 > +DB 69,15,56,200,203 > +DB 15,56,202,236 > +DB 69,15,56,202,227 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > + pxor xmm13,xmm11 > +DB 69,15,56,201,243 > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,3 > +DB 15,56,200,213 > +DB 69,15,58,204,193,3 > +DB 69,15,56,200,212 > +DB 15,56,202,245 > +DB 69,15,56,202,236 > + pxor xmm7,xmm5 > + pxor xmm14,xmm12 > + > + mov ecx,1 > + pxor xmm4,xmm4 > + cmp ecx,DWORD[rbx] > + cmovge r8,rsp > + > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,3 > +DB 15,56,200,206 > +DB 69,15,58,204,194,3 > +DB 69,15,56,200,205 > +DB 15,56,202,254 > +DB 69,15,56,202,245 > + > + cmp ecx,DWORD[4+rbx] > + cmovge r9,rsp > + movq xmm6,QWORD[rbx] > + > + movdqa xmm2,xmm0 > + movdqa xmm10,xmm8 > +DB 15,58,204,193,3 > +DB 15,56,200,215 > +DB 69,15,58,204,193,3 > +DB 69,15,56,200,214 > + > + pshufd xmm11,xmm6,0x00 > + pshufd xmm12,xmm6,0x55 > + movdqa xmm7,xmm6 > + pcmpgtd xmm11,xmm4 > + pcmpgtd xmm12,xmm4 > + > + movdqa xmm1,xmm0 > + movdqa xmm9,xmm8 > +DB 15,58,204,194,3 > +DB 15,56,200,204 > +DB 69,15,58,204,194,3 > +DB 68,15,56,200,204 > + > + pcmpgtd xmm7,xmm4 > + pand xmm0,xmm11 > + pand xmm1,xmm11 > + pand xmm8,xmm12 > + pand xmm9,xmm12 > + paddd xmm6,xmm7 > + > + paddd xmm0,XMMWORD[64+rsp] > + paddd xmm1,XMMWORD[80+rsp] > + paddd xmm8,XMMWORD[96+rsp] > + paddd xmm9,XMMWORD[112+rsp] > + > + movq QWORD[rbx],xmm6 > + dec edx > + jnz NEAR $L$oop_shaext > + > + mov edx,DWORD[280+rsp] > + > + pshufd xmm0,xmm0,27 > + pshufd xmm8,xmm8,27 > + > + movdqa xmm6,xmm0 > + punpckldq xmm0,xmm8 > + punpckhdq xmm6,xmm8 > + punpckhdq xmm1,xmm9 > + movq QWORD[(0-64)+rdi],xmm0 > + psrldq xmm0,8 > + movq QWORD[(64-64)+rdi],xmm6 > + psrldq xmm6,8 > + movq QWORD[(32-64)+rdi],xmm0 > + psrldq xmm1,8 > + movq QWORD[(96-64)+rdi],xmm6 > + movq QWORD[(128-64)+rdi],xmm1 > + > + lea rdi,[8+rdi] > + lea rsi,[32+rsi] > + dec edx > + jnz NEAR $L$oop_grande_shaext > + > +$L$done_shaext: > + > + movaps xmm6,XMMWORD[((-184))+rax] > + movaps xmm7,XMMWORD[((-168))+rax] > + movaps xmm8,XMMWORD[((-152))+rax] > + movaps xmm9,XMMWORD[((-136))+rax] > + movaps xmm10,XMMWORD[((-120))+rax] > + movaps xmm11,XMMWORD[((-104))+rax] > + movaps xmm12,XMMWORD[((-88))+rax] > + movaps xmm13,XMMWORD[((-72))+rax] > + movaps xmm14,XMMWORD[((-56))+rax] > + movaps xmm15,XMMWORD[((-40))+rax] > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$epilogue_shaext: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha1_multi_block_shaext: > + > +ALIGN 256 > + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +K_XX_XX: > + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > +DB 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107 > +DB 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120 > +DB 56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77 > +DB 83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110 > +DB 115,115,108,46,111,114,103,62,0 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + mov rax,QWORD[272+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + > + lea rsi,[((-24-160))+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_sha1_multi_block wrt ..imagebase > + DD $L$SEH_end_sha1_multi_block wrt ..imagebase > + DD $L$SEH_info_sha1_multi_block wrt ..imagebase > + DD $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase > + DD $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase > + DD $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_sha1_multi_block: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase > +$L$SEH_info_sha1_multi_block_shaext: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm > new file mode 100644 > index 0000000000..c6d68d348f > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm > @@ -0,0 +1,2884 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl > +; > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > +EXTERN OPENSSL_ia32cap_P > + > +global sha1_block_data_order > + > +ALIGN 16 > +sha1_block_data_order: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha1_block_data_order: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov r9d,DWORD[((OPENSSL_ia32cap_P+0))] > + mov r8d,DWORD[((OPENSSL_ia32cap_P+4))] > + mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] > + test r8d,512 > + jz NEAR $L$ialu > + test r10d,536870912 > + jnz NEAR _shaext_shortcut > + jmp NEAR _ssse3_shortcut > + > +ALIGN 16 > +$L$ialu: > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + mov r8,rdi > + sub rsp,72 > + mov r9,rsi > + and rsp,-64 > + mov r10,rdx > + mov QWORD[64+rsp],rax > + > +$L$prologue: > + > + mov esi,DWORD[r8] > + mov edi,DWORD[4+r8] > + mov r11d,DWORD[8+r8] > + mov r12d,DWORD[12+r8] > + mov r13d,DWORD[16+r8] > + jmp NEAR $L$loop > + > +ALIGN 16 > +$L$loop: > + mov edx,DWORD[r9] > + bswap edx > + mov ebp,DWORD[4+r9] > + mov eax,r12d > + mov DWORD[rsp],edx > + mov ecx,esi > + bswap ebp > + xor eax,r11d > + rol ecx,5 > + and eax,edi > + lea r13d,[1518500249+r13*1+rdx] > + add r13d,ecx > + xor eax,r12d > + rol edi,30 > + add r13d,eax > + mov r14d,DWORD[8+r9] > + mov eax,r11d > + mov DWORD[4+rsp],ebp > + mov ecx,r13d > + bswap r14d > + xor eax,edi > + rol ecx,5 > + and eax,esi > + lea r12d,[1518500249+r12*1+rbp] > + add r12d,ecx > + xor eax,r11d > + rol esi,30 > + add r12d,eax > + mov edx,DWORD[12+r9] > + mov eax,edi > + mov DWORD[8+rsp],r14d > + mov ecx,r12d > + bswap edx > + xor eax,esi > + rol ecx,5 > + and eax,r13d > + lea r11d,[1518500249+r11*1+r14] > + add r11d,ecx > + xor eax,edi > + rol r13d,30 > + add r11d,eax > + mov ebp,DWORD[16+r9] > + mov eax,esi > + mov DWORD[12+rsp],edx > + mov ecx,r11d > + bswap ebp > + xor eax,r13d > + rol ecx,5 > + and eax,r12d > + lea edi,[1518500249+rdi*1+rdx] > + add edi,ecx > + xor eax,esi > + rol r12d,30 > + add edi,eax > + mov r14d,DWORD[20+r9] > + mov eax,r13d > + mov DWORD[16+rsp],ebp > + mov ecx,edi > + bswap r14d > + xor eax,r12d > + rol ecx,5 > + and eax,r11d > + lea esi,[1518500249+rsi*1+rbp] > + add esi,ecx > + xor eax,r13d > + rol r11d,30 > + add esi,eax > + mov edx,DWORD[24+r9] > + mov eax,r12d > + mov DWORD[20+rsp],r14d > + mov ecx,esi > + bswap edx > + xor eax,r11d > + rol ecx,5 > + and eax,edi > + lea r13d,[1518500249+r13*1+r14] > + add r13d,ecx > + xor eax,r12d > + rol edi,30 > + add r13d,eax > + mov ebp,DWORD[28+r9] > + mov eax,r11d > + mov DWORD[24+rsp],edx > + mov ecx,r13d > + bswap ebp > + xor eax,edi > + rol ecx,5 > + and eax,esi > + lea r12d,[1518500249+r12*1+rdx] > + add r12d,ecx > + xor eax,r11d > + rol esi,30 > + add r12d,eax > + mov r14d,DWORD[32+r9] > + mov eax,edi > + mov DWORD[28+rsp],ebp > + mov ecx,r12d > + bswap r14d > + xor eax,esi > + rol ecx,5 > + and eax,r13d > + lea r11d,[1518500249+r11*1+rbp] > + add r11d,ecx > + xor eax,edi > + rol r13d,30 > + add r11d,eax > + mov edx,DWORD[36+r9] > + mov eax,esi > + mov DWORD[32+rsp],r14d > + mov ecx,r11d > + bswap edx > + xor eax,r13d > + rol ecx,5 > + and eax,r12d > + lea edi,[1518500249+rdi*1+r14] > + add edi,ecx > + xor eax,esi > + rol r12d,30 > + add edi,eax > + mov ebp,DWORD[40+r9] > + mov eax,r13d > + mov DWORD[36+rsp],edx > + mov ecx,edi > + bswap ebp > + xor eax,r12d > + rol ecx,5 > + and eax,r11d > + lea esi,[1518500249+rsi*1+rdx] > + add esi,ecx > + xor eax,r13d > + rol r11d,30 > + add esi,eax > + mov r14d,DWORD[44+r9] > + mov eax,r12d > + mov DWORD[40+rsp],ebp > + mov ecx,esi > + bswap r14d > + xor eax,r11d > + rol ecx,5 > + and eax,edi > + lea r13d,[1518500249+r13*1+rbp] > + add r13d,ecx > + xor eax,r12d > + rol edi,30 > + add r13d,eax > + mov edx,DWORD[48+r9] > + mov eax,r11d > + mov DWORD[44+rsp],r14d > + mov ecx,r13d > + bswap edx > + xor eax,edi > + rol ecx,5 > + and eax,esi > + lea r12d,[1518500249+r12*1+r14] > + add r12d,ecx > + xor eax,r11d > + rol esi,30 > + add r12d,eax > + mov ebp,DWORD[52+r9] > + mov eax,edi > + mov DWORD[48+rsp],edx > + mov ecx,r12d > + bswap ebp > + xor eax,esi > + rol ecx,5 > + and eax,r13d > + lea r11d,[1518500249+r11*1+rdx] > + add r11d,ecx > + xor eax,edi > + rol r13d,30 > + add r11d,eax > + mov r14d,DWORD[56+r9] > + mov eax,esi > + mov DWORD[52+rsp],ebp > + mov ecx,r11d > + bswap r14d > + xor eax,r13d > + rol ecx,5 > + and eax,r12d > + lea edi,[1518500249+rdi*1+rbp] > + add edi,ecx > + xor eax,esi > + rol r12d,30 > + add edi,eax > + mov edx,DWORD[60+r9] > + mov eax,r13d > + mov DWORD[56+rsp],r14d > + mov ecx,edi > + bswap edx > + xor eax,r12d > + rol ecx,5 > + and eax,r11d > + lea esi,[1518500249+rsi*1+r14] > + add esi,ecx > + xor eax,r13d > + rol r11d,30 > + add esi,eax > + xor ebp,DWORD[rsp] > + mov eax,r12d > + mov DWORD[60+rsp],edx > + mov ecx,esi > + xor ebp,DWORD[8+rsp] > + xor eax,r11d > + rol ecx,5 > + xor ebp,DWORD[32+rsp] > + and eax,edi > + lea r13d,[1518500249+r13*1+rdx] > + rol edi,30 > + xor eax,r12d > + add r13d,ecx > + rol ebp,1 > + add r13d,eax > + xor r14d,DWORD[4+rsp] > + mov eax,r11d > + mov DWORD[rsp],ebp > + mov ecx,r13d > + xor r14d,DWORD[12+rsp] > + xor eax,edi > + rol ecx,5 > + xor r14d,DWORD[36+rsp] > + and eax,esi > + lea r12d,[1518500249+r12*1+rbp] > + rol esi,30 > + xor eax,r11d > + add r12d,ecx > + rol r14d,1 > + add r12d,eax > + xor edx,DWORD[8+rsp] > + mov eax,edi > + mov DWORD[4+rsp],r14d > + mov ecx,r12d > + xor edx,DWORD[16+rsp] > + xor eax,esi > + rol ecx,5 > + xor edx,DWORD[40+rsp] > + and eax,r13d > + lea r11d,[1518500249+r11*1+r14] > + rol r13d,30 > + xor eax,edi > + add r11d,ecx > + rol edx,1 > + add r11d,eax > + xor ebp,DWORD[12+rsp] > + mov eax,esi > + mov DWORD[8+rsp],edx > + mov ecx,r11d > + xor ebp,DWORD[20+rsp] > + xor eax,r13d > + rol ecx,5 > + xor ebp,DWORD[44+rsp] > + and eax,r12d > + lea edi,[1518500249+rdi*1+rdx] > + rol r12d,30 > + xor eax,esi > + add edi,ecx > + rol ebp,1 > + add edi,eax > + xor r14d,DWORD[16+rsp] > + mov eax,r13d > + mov DWORD[12+rsp],ebp > + mov ecx,edi > + xor r14d,DWORD[24+rsp] > + xor eax,r12d > + rol ecx,5 > + xor r14d,DWORD[48+rsp] > + and eax,r11d > + lea esi,[1518500249+rsi*1+rbp] > + rol r11d,30 > + xor eax,r13d > + add esi,ecx > + rol r14d,1 > + add esi,eax > + xor edx,DWORD[20+rsp] > + mov eax,edi > + mov DWORD[16+rsp],r14d > + mov ecx,esi > + xor edx,DWORD[28+rsp] > + xor eax,r12d > + rol ecx,5 > + xor edx,DWORD[52+rsp] > + lea r13d,[1859775393+r13*1+r14] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol edx,1 > + xor ebp,DWORD[24+rsp] > + mov eax,esi > + mov DWORD[20+rsp],edx > + mov ecx,r13d > + xor ebp,DWORD[32+rsp] > + xor eax,r11d > + rol ecx,5 > + xor ebp,DWORD[56+rsp] > + lea r12d,[1859775393+r12*1+rdx] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol ebp,1 > + xor r14d,DWORD[28+rsp] > + mov eax,r13d > + mov DWORD[24+rsp],ebp > + mov ecx,r12d > + xor r14d,DWORD[36+rsp] > + xor eax,edi > + rol ecx,5 > + xor r14d,DWORD[60+rsp] > + lea r11d,[1859775393+r11*1+rbp] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol r14d,1 > + xor edx,DWORD[32+rsp] > + mov eax,r12d > + mov DWORD[28+rsp],r14d > + mov ecx,r11d > + xor edx,DWORD[40+rsp] > + xor eax,esi > + rol ecx,5 > + xor edx,DWORD[rsp] > + lea edi,[1859775393+rdi*1+r14] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol edx,1 > + xor ebp,DWORD[36+rsp] > + mov eax,r11d > + mov DWORD[32+rsp],edx > + mov ecx,edi > + xor ebp,DWORD[44+rsp] > + xor eax,r13d > + rol ecx,5 > + xor ebp,DWORD[4+rsp] > + lea esi,[1859775393+rsi*1+rdx] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol ebp,1 > + xor r14d,DWORD[40+rsp] > + mov eax,edi > + mov DWORD[36+rsp],ebp > + mov ecx,esi > + xor r14d,DWORD[48+rsp] > + xor eax,r12d > + rol ecx,5 > + xor r14d,DWORD[8+rsp] > + lea r13d,[1859775393+r13*1+rbp] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol r14d,1 > + xor edx,DWORD[44+rsp] > + mov eax,esi > + mov DWORD[40+rsp],r14d > + mov ecx,r13d > + xor edx,DWORD[52+rsp] > + xor eax,r11d > + rol ecx,5 > + xor edx,DWORD[12+rsp] > + lea r12d,[1859775393+r12*1+r14] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol edx,1 > + xor ebp,DWORD[48+rsp] > + mov eax,r13d > + mov DWORD[44+rsp],edx > + mov ecx,r12d > + xor ebp,DWORD[56+rsp] > + xor eax,edi > + rol ecx,5 > + xor ebp,DWORD[16+rsp] > + lea r11d,[1859775393+r11*1+rdx] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol ebp,1 > + xor r14d,DWORD[52+rsp] > + mov eax,r12d > + mov DWORD[48+rsp],ebp > + mov ecx,r11d > + xor r14d,DWORD[60+rsp] > + xor eax,esi > + rol ecx,5 > + xor r14d,DWORD[20+rsp] > + lea edi,[1859775393+rdi*1+rbp] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol r14d,1 > + xor edx,DWORD[56+rsp] > + mov eax,r11d > + mov DWORD[52+rsp],r14d > + mov ecx,edi > + xor edx,DWORD[rsp] > + xor eax,r13d > + rol ecx,5 > + xor edx,DWORD[24+rsp] > + lea esi,[1859775393+rsi*1+r14] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol edx,1 > + xor ebp,DWORD[60+rsp] > + mov eax,edi > + mov DWORD[56+rsp],edx > + mov ecx,esi > + xor ebp,DWORD[4+rsp] > + xor eax,r12d > + rol ecx,5 > + xor ebp,DWORD[28+rsp] > + lea r13d,[1859775393+r13*1+rdx] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol ebp,1 > + xor r14d,DWORD[rsp] > + mov eax,esi > + mov DWORD[60+rsp],ebp > + mov ecx,r13d > + xor r14d,DWORD[8+rsp] > + xor eax,r11d > + rol ecx,5 > + xor r14d,DWORD[32+rsp] > + lea r12d,[1859775393+r12*1+rbp] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol r14d,1 > + xor edx,DWORD[4+rsp] > + mov eax,r13d > + mov DWORD[rsp],r14d > + mov ecx,r12d > + xor edx,DWORD[12+rsp] > + xor eax,edi > + rol ecx,5 > + xor edx,DWORD[36+rsp] > + lea r11d,[1859775393+r11*1+r14] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol edx,1 > + xor ebp,DWORD[8+rsp] > + mov eax,r12d > + mov DWORD[4+rsp],edx > + mov ecx,r11d > + xor ebp,DWORD[16+rsp] > + xor eax,esi > + rol ecx,5 > + xor ebp,DWORD[40+rsp] > + lea edi,[1859775393+rdi*1+rdx] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol ebp,1 > + xor r14d,DWORD[12+rsp] > + mov eax,r11d > + mov DWORD[8+rsp],ebp > + mov ecx,edi > + xor r14d,DWORD[20+rsp] > + xor eax,r13d > + rol ecx,5 > + xor r14d,DWORD[44+rsp] > + lea esi,[1859775393+rsi*1+rbp] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol r14d,1 > + xor edx,DWORD[16+rsp] > + mov eax,edi > + mov DWORD[12+rsp],r14d > + mov ecx,esi > + xor edx,DWORD[24+rsp] > + xor eax,r12d > + rol ecx,5 > + xor edx,DWORD[48+rsp] > + lea r13d,[1859775393+r13*1+r14] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol edx,1 > + xor ebp,DWORD[20+rsp] > + mov eax,esi > + mov DWORD[16+rsp],edx > + mov ecx,r13d > + xor ebp,DWORD[28+rsp] > + xor eax,r11d > + rol ecx,5 > + xor ebp,DWORD[52+rsp] > + lea r12d,[1859775393+r12*1+rdx] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol ebp,1 > + xor r14d,DWORD[24+rsp] > + mov eax,r13d > + mov DWORD[20+rsp],ebp > + mov ecx,r12d > + xor r14d,DWORD[32+rsp] > + xor eax,edi > + rol ecx,5 > + xor r14d,DWORD[56+rsp] > + lea r11d,[1859775393+r11*1+rbp] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol r14d,1 > + xor edx,DWORD[28+rsp] > + mov eax,r12d > + mov DWORD[24+rsp],r14d > + mov ecx,r11d > + xor edx,DWORD[36+rsp] > + xor eax,esi > + rol ecx,5 > + xor edx,DWORD[60+rsp] > + lea edi,[1859775393+rdi*1+r14] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol edx,1 > + xor ebp,DWORD[32+rsp] > + mov eax,r11d > + mov DWORD[28+rsp],edx > + mov ecx,edi > + xor ebp,DWORD[40+rsp] > + xor eax,r13d > + rol ecx,5 > + xor ebp,DWORD[rsp] > + lea esi,[1859775393+rsi*1+rdx] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol ebp,1 > + xor r14d,DWORD[36+rsp] > + mov eax,r12d > + mov DWORD[32+rsp],ebp > + mov ebx,r12d > + xor r14d,DWORD[44+rsp] > + and eax,r11d > + mov ecx,esi > + xor r14d,DWORD[4+rsp] > + lea r13d,[((-1894007588))+r13*1+rbp] > + xor ebx,r11d > + rol ecx,5 > + add r13d,eax > + rol r14d,1 > + and ebx,edi > + add r13d,ecx > + rol edi,30 > + add r13d,ebx > + xor edx,DWORD[40+rsp] > + mov eax,r11d > + mov DWORD[36+rsp],r14d > + mov ebx,r11d > + xor edx,DWORD[48+rsp] > + and eax,edi > + mov ecx,r13d > + xor edx,DWORD[8+rsp] > + lea r12d,[((-1894007588))+r12*1+r14] > + xor ebx,edi > + rol ecx,5 > + add r12d,eax > + rol edx,1 > + and ebx,esi > + add r12d,ecx > + rol esi,30 > + add r12d,ebx > + xor ebp,DWORD[44+rsp] > + mov eax,edi > + mov DWORD[40+rsp],edx > + mov ebx,edi > + xor ebp,DWORD[52+rsp] > + and eax,esi > + mov ecx,r12d > + xor ebp,DWORD[12+rsp] > + lea r11d,[((-1894007588))+r11*1+rdx] > + xor ebx,esi > + rol ecx,5 > + add r11d,eax > + rol ebp,1 > + and ebx,r13d > + add r11d,ecx > + rol r13d,30 > + add r11d,ebx > + xor r14d,DWORD[48+rsp] > + mov eax,esi > + mov DWORD[44+rsp],ebp > + mov ebx,esi > + xor r14d,DWORD[56+rsp] > + and eax,r13d > + mov ecx,r11d > + xor r14d,DWORD[16+rsp] > + lea edi,[((-1894007588))+rdi*1+rbp] > + xor ebx,r13d > + rol ecx,5 > + add edi,eax > + rol r14d,1 > + and ebx,r12d > + add edi,ecx > + rol r12d,30 > + add edi,ebx > + xor edx,DWORD[52+rsp] > + mov eax,r13d > + mov DWORD[48+rsp],r14d > + mov ebx,r13d > + xor edx,DWORD[60+rsp] > + and eax,r12d > + mov ecx,edi > + xor edx,DWORD[20+rsp] > + lea esi,[((-1894007588))+rsi*1+r14] > + xor ebx,r12d > + rol ecx,5 > + add esi,eax > + rol edx,1 > + and ebx,r11d > + add esi,ecx > + rol r11d,30 > + add esi,ebx > + xor ebp,DWORD[56+rsp] > + mov eax,r12d > + mov DWORD[52+rsp],edx > + mov ebx,r12d > + xor ebp,DWORD[rsp] > + and eax,r11d > + mov ecx,esi > + xor ebp,DWORD[24+rsp] > + lea r13d,[((-1894007588))+r13*1+rdx] > + xor ebx,r11d > + rol ecx,5 > + add r13d,eax > + rol ebp,1 > + and ebx,edi > + add r13d,ecx > + rol edi,30 > + add r13d,ebx > + xor r14d,DWORD[60+rsp] > + mov eax,r11d > + mov DWORD[56+rsp],ebp > + mov ebx,r11d > + xor r14d,DWORD[4+rsp] > + and eax,edi > + mov ecx,r13d > + xor r14d,DWORD[28+rsp] > + lea r12d,[((-1894007588))+r12*1+rbp] > + xor ebx,edi > + rol ecx,5 > + add r12d,eax > + rol r14d,1 > + and ebx,esi > + add r12d,ecx > + rol esi,30 > + add r12d,ebx > + xor edx,DWORD[rsp] > + mov eax,edi > + mov DWORD[60+rsp],r14d > + mov ebx,edi > + xor edx,DWORD[8+rsp] > + and eax,esi > + mov ecx,r12d > + xor edx,DWORD[32+rsp] > + lea r11d,[((-1894007588))+r11*1+r14] > + xor ebx,esi > + rol ecx,5 > + add r11d,eax > + rol edx,1 > + and ebx,r13d > + add r11d,ecx > + rol r13d,30 > + add r11d,ebx > + xor ebp,DWORD[4+rsp] > + mov eax,esi > + mov DWORD[rsp],edx > + mov ebx,esi > + xor ebp,DWORD[12+rsp] > + and eax,r13d > + mov ecx,r11d > + xor ebp,DWORD[36+rsp] > + lea edi,[((-1894007588))+rdi*1+rdx] > + xor ebx,r13d > + rol ecx,5 > + add edi,eax > + rol ebp,1 > + and ebx,r12d > + add edi,ecx > + rol r12d,30 > + add edi,ebx > + xor r14d,DWORD[8+rsp] > + mov eax,r13d > + mov DWORD[4+rsp],ebp > + mov ebx,r13d > + xor r14d,DWORD[16+rsp] > + and eax,r12d > + mov ecx,edi > + xor r14d,DWORD[40+rsp] > + lea esi,[((-1894007588))+rsi*1+rbp] > + xor ebx,r12d > + rol ecx,5 > + add esi,eax > + rol r14d,1 > + and ebx,r11d > + add esi,ecx > + rol r11d,30 > + add esi,ebx > + xor edx,DWORD[12+rsp] > + mov eax,r12d > + mov DWORD[8+rsp],r14d > + mov ebx,r12d > + xor edx,DWORD[20+rsp] > + and eax,r11d > + mov ecx,esi > + xor edx,DWORD[44+rsp] > + lea r13d,[((-1894007588))+r13*1+r14] > + xor ebx,r11d > + rol ecx,5 > + add r13d,eax > + rol edx,1 > + and ebx,edi > + add r13d,ecx > + rol edi,30 > + add r13d,ebx > + xor ebp,DWORD[16+rsp] > + mov eax,r11d > + mov DWORD[12+rsp],edx > + mov ebx,r11d > + xor ebp,DWORD[24+rsp] > + and eax,edi > + mov ecx,r13d > + xor ebp,DWORD[48+rsp] > + lea r12d,[((-1894007588))+r12*1+rdx] > + xor ebx,edi > + rol ecx,5 > + add r12d,eax > + rol ebp,1 > + and ebx,esi > + add r12d,ecx > + rol esi,30 > + add r12d,ebx > + xor r14d,DWORD[20+rsp] > + mov eax,edi > + mov DWORD[16+rsp],ebp > + mov ebx,edi > + xor r14d,DWORD[28+rsp] > + and eax,esi > + mov ecx,r12d > + xor r14d,DWORD[52+rsp] > + lea r11d,[((-1894007588))+r11*1+rbp] > + xor ebx,esi > + rol ecx,5 > + add r11d,eax > + rol r14d,1 > + and ebx,r13d > + add r11d,ecx > + rol r13d,30 > + add r11d,ebx > + xor edx,DWORD[24+rsp] > + mov eax,esi > + mov DWORD[20+rsp],r14d > + mov ebx,esi > + xor edx,DWORD[32+rsp] > + and eax,r13d > + mov ecx,r11d > + xor edx,DWORD[56+rsp] > + lea edi,[((-1894007588))+rdi*1+r14] > + xor ebx,r13d > + rol ecx,5 > + add edi,eax > + rol edx,1 > + and ebx,r12d > + add edi,ecx > + rol r12d,30 > + add edi,ebx > + xor ebp,DWORD[28+rsp] > + mov eax,r13d > + mov DWORD[24+rsp],edx > + mov ebx,r13d > + xor ebp,DWORD[36+rsp] > + and eax,r12d > + mov ecx,edi > + xor ebp,DWORD[60+rsp] > + lea esi,[((-1894007588))+rsi*1+rdx] > + xor ebx,r12d > + rol ecx,5 > + add esi,eax > + rol ebp,1 > + and ebx,r11d > + add esi,ecx > + rol r11d,30 > + add esi,ebx > + xor r14d,DWORD[32+rsp] > + mov eax,r12d > + mov DWORD[28+rsp],ebp > + mov ebx,r12d > + xor r14d,DWORD[40+rsp] > + and eax,r11d > + mov ecx,esi > + xor r14d,DWORD[rsp] > + lea r13d,[((-1894007588))+r13*1+rbp] > + xor ebx,r11d > + rol ecx,5 > + add r13d,eax > + rol r14d,1 > + and ebx,edi > + add r13d,ecx > + rol edi,30 > + add r13d,ebx > + xor edx,DWORD[36+rsp] > + mov eax,r11d > + mov DWORD[32+rsp],r14d > + mov ebx,r11d > + xor edx,DWORD[44+rsp] > + and eax,edi > + mov ecx,r13d > + xor edx,DWORD[4+rsp] > + lea r12d,[((-1894007588))+r12*1+r14] > + xor ebx,edi > + rol ecx,5 > + add r12d,eax > + rol edx,1 > + and ebx,esi > + add r12d,ecx > + rol esi,30 > + add r12d,ebx > + xor ebp,DWORD[40+rsp] > + mov eax,edi > + mov DWORD[36+rsp],edx > + mov ebx,edi > + xor ebp,DWORD[48+rsp] > + and eax,esi > + mov ecx,r12d > + xor ebp,DWORD[8+rsp] > + lea r11d,[((-1894007588))+r11*1+rdx] > + xor ebx,esi > + rol ecx,5 > + add r11d,eax > + rol ebp,1 > + and ebx,r13d > + add r11d,ecx > + rol r13d,30 > + add r11d,ebx > + xor r14d,DWORD[44+rsp] > + mov eax,esi > + mov DWORD[40+rsp],ebp > + mov ebx,esi > + xor r14d,DWORD[52+rsp] > + and eax,r13d > + mov ecx,r11d > + xor r14d,DWORD[12+rsp] > + lea edi,[((-1894007588))+rdi*1+rbp] > + xor ebx,r13d > + rol ecx,5 > + add edi,eax > + rol r14d,1 > + and ebx,r12d > + add edi,ecx > + rol r12d,30 > + add edi,ebx > + xor edx,DWORD[48+rsp] > + mov eax,r13d > + mov DWORD[44+rsp],r14d > + mov ebx,r13d > + xor edx,DWORD[56+rsp] > + and eax,r12d > + mov ecx,edi > + xor edx,DWORD[16+rsp] > + lea esi,[((-1894007588))+rsi*1+r14] > + xor ebx,r12d > + rol ecx,5 > + add esi,eax > + rol edx,1 > + and ebx,r11d > + add esi,ecx > + rol r11d,30 > + add esi,ebx > + xor ebp,DWORD[52+rsp] > + mov eax,edi > + mov DWORD[48+rsp],edx > + mov ecx,esi > + xor ebp,DWORD[60+rsp] > + xor eax,r12d > + rol ecx,5 > + xor ebp,DWORD[20+rsp] > + lea r13d,[((-899497514))+r13*1+rdx] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol ebp,1 > + xor r14d,DWORD[56+rsp] > + mov eax,esi > + mov DWORD[52+rsp],ebp > + mov ecx,r13d > + xor r14d,DWORD[rsp] > + xor eax,r11d > + rol ecx,5 > + xor r14d,DWORD[24+rsp] > + lea r12d,[((-899497514))+r12*1+rbp] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol r14d,1 > + xor edx,DWORD[60+rsp] > + mov eax,r13d > + mov DWORD[56+rsp],r14d > + mov ecx,r12d > + xor edx,DWORD[4+rsp] > + xor eax,edi > + rol ecx,5 > + xor edx,DWORD[28+rsp] > + lea r11d,[((-899497514))+r11*1+r14] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol edx,1 > + xor ebp,DWORD[rsp] > + mov eax,r12d > + mov DWORD[60+rsp],edx > + mov ecx,r11d > + xor ebp,DWORD[8+rsp] > + xor eax,esi > + rol ecx,5 > + xor ebp,DWORD[32+rsp] > + lea edi,[((-899497514))+rdi*1+rdx] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol ebp,1 > + xor r14d,DWORD[4+rsp] > + mov eax,r11d > + mov DWORD[rsp],ebp > + mov ecx,edi > + xor r14d,DWORD[12+rsp] > + xor eax,r13d > + rol ecx,5 > + xor r14d,DWORD[36+rsp] > + lea esi,[((-899497514))+rsi*1+rbp] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol r14d,1 > + xor edx,DWORD[8+rsp] > + mov eax,edi > + mov DWORD[4+rsp],r14d > + mov ecx,esi > + xor edx,DWORD[16+rsp] > + xor eax,r12d > + rol ecx,5 > + xor edx,DWORD[40+rsp] > + lea r13d,[((-899497514))+r13*1+r14] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol edx,1 > + xor ebp,DWORD[12+rsp] > + mov eax,esi > + mov DWORD[8+rsp],edx > + mov ecx,r13d > + xor ebp,DWORD[20+rsp] > + xor eax,r11d > + rol ecx,5 > + xor ebp,DWORD[44+rsp] > + lea r12d,[((-899497514))+r12*1+rdx] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol ebp,1 > + xor r14d,DWORD[16+rsp] > + mov eax,r13d > + mov DWORD[12+rsp],ebp > + mov ecx,r12d > + xor r14d,DWORD[24+rsp] > + xor eax,edi > + rol ecx,5 > + xor r14d,DWORD[48+rsp] > + lea r11d,[((-899497514))+r11*1+rbp] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol r14d,1 > + xor edx,DWORD[20+rsp] > + mov eax,r12d > + mov DWORD[16+rsp],r14d > + mov ecx,r11d > + xor edx,DWORD[28+rsp] > + xor eax,esi > + rol ecx,5 > + xor edx,DWORD[52+rsp] > + lea edi,[((-899497514))+rdi*1+r14] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol edx,1 > + xor ebp,DWORD[24+rsp] > + mov eax,r11d > + mov DWORD[20+rsp],edx > + mov ecx,edi > + xor ebp,DWORD[32+rsp] > + xor eax,r13d > + rol ecx,5 > + xor ebp,DWORD[56+rsp] > + lea esi,[((-899497514))+rsi*1+rdx] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol ebp,1 > + xor r14d,DWORD[28+rsp] > + mov eax,edi > + mov DWORD[24+rsp],ebp > + mov ecx,esi > + xor r14d,DWORD[36+rsp] > + xor eax,r12d > + rol ecx,5 > + xor r14d,DWORD[60+rsp] > + lea r13d,[((-899497514))+r13*1+rbp] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol r14d,1 > + xor edx,DWORD[32+rsp] > + mov eax,esi > + mov DWORD[28+rsp],r14d > + mov ecx,r13d > + xor edx,DWORD[40+rsp] > + xor eax,r11d > + rol ecx,5 > + xor edx,DWORD[rsp] > + lea r12d,[((-899497514))+r12*1+r14] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol edx,1 > + xor ebp,DWORD[36+rsp] > + mov eax,r13d > + > + mov ecx,r12d > + xor ebp,DWORD[44+rsp] > + xor eax,edi > + rol ecx,5 > + xor ebp,DWORD[4+rsp] > + lea r11d,[((-899497514))+r11*1+rdx] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol ebp,1 > + xor r14d,DWORD[40+rsp] > + mov eax,r12d > + > + mov ecx,r11d > + xor r14d,DWORD[48+rsp] > + xor eax,esi > + rol ecx,5 > + xor r14d,DWORD[8+rsp] > + lea edi,[((-899497514))+rdi*1+rbp] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol r14d,1 > + xor edx,DWORD[44+rsp] > + mov eax,r11d > + > + mov ecx,edi > + xor edx,DWORD[52+rsp] > + xor eax,r13d > + rol ecx,5 > + xor edx,DWORD[12+rsp] > + lea esi,[((-899497514))+rsi*1+r14] > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + rol edx,1 > + xor ebp,DWORD[48+rsp] > + mov eax,edi > + > + mov ecx,esi > + xor ebp,DWORD[56+rsp] > + xor eax,r12d > + rol ecx,5 > + xor ebp,DWORD[16+rsp] > + lea r13d,[((-899497514))+r13*1+rdx] > + xor eax,r11d > + add r13d,ecx > + rol edi,30 > + add r13d,eax > + rol ebp,1 > + xor r14d,DWORD[52+rsp] > + mov eax,esi > + > + mov ecx,r13d > + xor r14d,DWORD[60+rsp] > + xor eax,r11d > + rol ecx,5 > + xor r14d,DWORD[20+rsp] > + lea r12d,[((-899497514))+r12*1+rbp] > + xor eax,edi > + add r12d,ecx > + rol esi,30 > + add r12d,eax > + rol r14d,1 > + xor edx,DWORD[56+rsp] > + mov eax,r13d > + > + mov ecx,r12d > + xor edx,DWORD[rsp] > + xor eax,edi > + rol ecx,5 > + xor edx,DWORD[24+rsp] > + lea r11d,[((-899497514))+r11*1+r14] > + xor eax,esi > + add r11d,ecx > + rol r13d,30 > + add r11d,eax > + rol edx,1 > + xor ebp,DWORD[60+rsp] > + mov eax,r12d > + > + mov ecx,r11d > + xor ebp,DWORD[4+rsp] > + xor eax,esi > + rol ecx,5 > + xor ebp,DWORD[28+rsp] > + lea edi,[((-899497514))+rdi*1+rdx] > + xor eax,r13d > + add edi,ecx > + rol r12d,30 > + add edi,eax > + rol ebp,1 > + mov eax,r11d > + mov ecx,edi > + xor eax,r13d > + lea esi,[((-899497514))+rsi*1+rbp] > + rol ecx,5 > + xor eax,r12d > + add esi,ecx > + rol r11d,30 > + add esi,eax > + add esi,DWORD[r8] > + add edi,DWORD[4+r8] > + add r11d,DWORD[8+r8] > + add r12d,DWORD[12+r8] > + add r13d,DWORD[16+r8] > + mov DWORD[r8],esi > + mov DWORD[4+r8],edi > + mov DWORD[8+r8],r11d > + mov DWORD[12+r8],r12d > + mov DWORD[16+r8],r13d > + > + sub r10,1 > + lea r9,[64+r9] > + jnz NEAR $L$loop > + > + mov rsi,QWORD[64+rsp] > + > + mov r14,QWORD[((-40))+rsi] > + > + mov r13,QWORD[((-32))+rsi] > + > + mov r12,QWORD[((-24))+rsi] > + > + mov rbp,QWORD[((-16))+rsi] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha1_block_data_order: > + > +ALIGN 32 > +sha1_block_data_order_shaext: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha1_block_data_order_shaext: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > +_shaext_shortcut: > + > + lea rsp,[((-72))+rsp] > + movaps XMMWORD[(-8-64)+rax],xmm6 > + movaps XMMWORD[(-8-48)+rax],xmm7 > + movaps XMMWORD[(-8-32)+rax],xmm8 > + movaps XMMWORD[(-8-16)+rax],xmm9 > +$L$prologue_shaext: > + movdqu xmm0,XMMWORD[rdi] > + movd xmm1,DWORD[16+rdi] > + movdqa xmm3,XMMWORD[((K_XX_XX+160))] > + > + movdqu xmm4,XMMWORD[rsi] > + pshufd xmm0,xmm0,27 > + movdqu xmm5,XMMWORD[16+rsi] > + pshufd xmm1,xmm1,27 > + movdqu xmm6,XMMWORD[32+rsi] > +DB 102,15,56,0,227 > + movdqu xmm7,XMMWORD[48+rsi] > +DB 102,15,56,0,235 > +DB 102,15,56,0,243 > + movdqa xmm9,xmm1 > +DB 102,15,56,0,251 > + jmp NEAR $L$oop_shaext > + > +ALIGN 16 > +$L$oop_shaext: > + dec rdx > + lea r8,[64+rsi] > + paddd xmm1,xmm4 > + cmovne rsi,r8 > + movdqa xmm8,xmm0 > +DB 15,56,201,229 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,0 > +DB 15,56,200,213 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > +DB 15,56,202,231 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,0 > +DB 15,56,200,206 > + pxor xmm5,xmm7 > +DB 15,56,202,236 > +DB 15,56,201,247 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,0 > +DB 15,56,200,215 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > +DB 15,56,202,245 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,0 > +DB 15,56,200,204 > + pxor xmm7,xmm5 > +DB 15,56,202,254 > +DB 15,56,201,229 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,0 > +DB 15,56,200,213 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > +DB 15,56,202,231 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,1 > +DB 15,56,200,206 > + pxor xmm5,xmm7 > +DB 15,56,202,236 > +DB 15,56,201,247 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,1 > +DB 15,56,200,215 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > +DB 15,56,202,245 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,1 > +DB 15,56,200,204 > + pxor xmm7,xmm5 > +DB 15,56,202,254 > +DB 15,56,201,229 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,1 > +DB 15,56,200,213 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > +DB 15,56,202,231 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,1 > +DB 15,56,200,206 > + pxor xmm5,xmm7 > +DB 15,56,202,236 > +DB 15,56,201,247 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,2 > +DB 15,56,200,215 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > +DB 15,56,202,245 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,2 > +DB 15,56,200,204 > + pxor xmm7,xmm5 > +DB 15,56,202,254 > +DB 15,56,201,229 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,2 > +DB 15,56,200,213 > + pxor xmm4,xmm6 > +DB 15,56,201,238 > +DB 15,56,202,231 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,2 > +DB 15,56,200,206 > + pxor xmm5,xmm7 > +DB 15,56,202,236 > +DB 15,56,201,247 > + movdqa xmm2,xmm0 > +DB 15,58,204,193,2 > +DB 15,56,200,215 > + pxor xmm6,xmm4 > +DB 15,56,201,252 > +DB 15,56,202,245 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,3 > +DB 15,56,200,204 > + pxor xmm7,xmm5 > +DB 15,56,202,254 > + movdqu xmm4,XMMWORD[rsi] > + movdqa xmm2,xmm0 > +DB 15,58,204,193,3 > +DB 15,56,200,213 > + movdqu xmm5,XMMWORD[16+rsi] > +DB 102,15,56,0,227 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,3 > +DB 15,56,200,206 > + movdqu xmm6,XMMWORD[32+rsi] > +DB 102,15,56,0,235 > + > + movdqa xmm2,xmm0 > +DB 15,58,204,193,3 > +DB 15,56,200,215 > + movdqu xmm7,XMMWORD[48+rsi] > +DB 102,15,56,0,243 > + > + movdqa xmm1,xmm0 > +DB 15,58,204,194,3 > +DB 65,15,56,200,201 > +DB 102,15,56,0,251 > + > + paddd xmm0,xmm8 > + movdqa xmm9,xmm1 > + > + jnz NEAR $L$oop_shaext > + > + pshufd xmm0,xmm0,27 > + pshufd xmm1,xmm1,27 > + movdqu XMMWORD[rdi],xmm0 > + movd DWORD[16+rdi],xmm1 > + movaps xmm6,XMMWORD[((-8-64))+rax] > + movaps xmm7,XMMWORD[((-8-48))+rax] > + movaps xmm8,XMMWORD[((-8-32))+rax] > + movaps xmm9,XMMWORD[((-8-16))+rax] > + mov rsp,rax > +$L$epilogue_shaext: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha1_block_data_order_shaext: > + > +ALIGN 16 > +sha1_block_data_order_ssse3: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha1_block_data_order_ssse3: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > +_ssse3_shortcut: > + > + mov r11,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + lea rsp,[((-160))+rsp] > + movaps XMMWORD[(-40-96)+r11],xmm6 > + movaps XMMWORD[(-40-80)+r11],xmm7 > + movaps XMMWORD[(-40-64)+r11],xmm8 > + movaps XMMWORD[(-40-48)+r11],xmm9 > + movaps XMMWORD[(-40-32)+r11],xmm10 > + movaps XMMWORD[(-40-16)+r11],xmm11 > +$L$prologue_ssse3: > + and rsp,-64 > + mov r8,rdi > + mov r9,rsi > + mov r10,rdx > + > + shl r10,6 > + add r10,r9 > + lea r14,[((K_XX_XX+64))] > + > + mov eax,DWORD[r8] > + mov ebx,DWORD[4+r8] > + mov ecx,DWORD[8+r8] > + mov edx,DWORD[12+r8] > + mov esi,ebx > + mov ebp,DWORD[16+r8] > + mov edi,ecx > + xor edi,edx > + and esi,edi > + > + movdqa xmm6,XMMWORD[64+r14] > + movdqa xmm9,XMMWORD[((-64))+r14] > + movdqu xmm0,XMMWORD[r9] > + movdqu xmm1,XMMWORD[16+r9] > + movdqu xmm2,XMMWORD[32+r9] > + movdqu xmm3,XMMWORD[48+r9] > +DB 102,15,56,0,198 > +DB 102,15,56,0,206 > +DB 102,15,56,0,214 > + add r9,64 > + paddd xmm0,xmm9 > +DB 102,15,56,0,222 > + paddd xmm1,xmm9 > + paddd xmm2,xmm9 > + movdqa XMMWORD[rsp],xmm0 > + psubd xmm0,xmm9 > + movdqa XMMWORD[16+rsp],xmm1 > + psubd xmm1,xmm9 > + movdqa XMMWORD[32+rsp],xmm2 > + psubd xmm2,xmm9 > + jmp NEAR $L$oop_ssse3 > +ALIGN 16 > +$L$oop_ssse3: > + ror ebx,2 > + pshufd xmm4,xmm0,238 > + xor esi,edx > + movdqa xmm8,xmm3 > + paddd xmm9,xmm3 > + mov edi,eax > + add ebp,DWORD[rsp] > + punpcklqdq xmm4,xmm1 > + xor ebx,ecx > + rol eax,5 > + add ebp,esi > + psrldq xmm8,4 > + and edi,ebx > + xor ebx,ecx > + pxor xmm4,xmm0 > + add ebp,eax > + ror eax,7 > + pxor xmm8,xmm2 > + xor edi,ecx > + mov esi,ebp > + add edx,DWORD[4+rsp] > + pxor xmm4,xmm8 > + xor eax,ebx > + rol ebp,5 > + movdqa XMMWORD[48+rsp],xmm9 > + add edx,edi > + and esi,eax > + movdqa xmm10,xmm4 > + xor eax,ebx > + add edx,ebp > + ror ebp,7 > + movdqa xmm8,xmm4 > + xor esi,ebx > + pslldq xmm10,12 > + paddd xmm4,xmm4 > + mov edi,edx > + add ecx,DWORD[8+rsp] > + psrld xmm8,31 > + xor ebp,eax > + rol edx,5 > + add ecx,esi > + movdqa xmm9,xmm10 > + and edi,ebp > + xor ebp,eax > + psrld xmm10,30 > + add ecx,edx > + ror edx,7 > + por xmm4,xmm8 > + xor edi,eax > + mov esi,ecx > + add ebx,DWORD[12+rsp] > + pslld xmm9,2 > + pxor xmm4,xmm10 > + xor edx,ebp > + movdqa xmm10,XMMWORD[((-64))+r14] > + rol ecx,5 > + add ebx,edi > + and esi,edx > + pxor xmm4,xmm9 > + xor edx,ebp > + add ebx,ecx > + ror ecx,7 > + pshufd xmm5,xmm1,238 > + xor esi,ebp > + movdqa xmm9,xmm4 > + paddd xmm10,xmm4 > + mov edi,ebx > + add eax,DWORD[16+rsp] > + punpcklqdq xmm5,xmm2 > + xor ecx,edx > + rol ebx,5 > + add eax,esi > + psrldq xmm9,4 > + and edi,ecx > + xor ecx,edx > + pxor xmm5,xmm1 > + add eax,ebx > + ror ebx,7 > + pxor xmm9,xmm3 > + xor edi,edx > + mov esi,eax > + add ebp,DWORD[20+rsp] > + pxor xmm5,xmm9 > + xor ebx,ecx > + rol eax,5 > + movdqa XMMWORD[rsp],xmm10 > + add ebp,edi > + and esi,ebx > + movdqa xmm8,xmm5 > + xor ebx,ecx > + add ebp,eax > + ror eax,7 > + movdqa xmm9,xmm5 > + xor esi,ecx > + pslldq xmm8,12 > + paddd xmm5,xmm5 > + mov edi,ebp > + add edx,DWORD[24+rsp] > + psrld xmm9,31 > + xor eax,ebx > + rol ebp,5 > + add edx,esi > + movdqa xmm10,xmm8 > + and edi,eax > + xor eax,ebx > + psrld xmm8,30 > + add edx,ebp > + ror ebp,7 > + por xmm5,xmm9 > + xor edi,ebx > + mov esi,edx > + add ecx,DWORD[28+rsp] > + pslld xmm10,2 > + pxor xmm5,xmm8 > + xor ebp,eax > + movdqa xmm8,XMMWORD[((-32))+r14] > + rol edx,5 > + add ecx,edi > + and esi,ebp > + pxor xmm5,xmm10 > + xor ebp,eax > + add ecx,edx > + ror edx,7 > + pshufd xmm6,xmm2,238 > + xor esi,eax > + movdqa xmm10,xmm5 > + paddd xmm8,xmm5 > + mov edi,ecx > + add ebx,DWORD[32+rsp] > + punpcklqdq xmm6,xmm3 > + xor edx,ebp > + rol ecx,5 > + add ebx,esi > + psrldq xmm10,4 > + and edi,edx > + xor edx,ebp > + pxor xmm6,xmm2 > + add ebx,ecx > + ror ecx,7 > + pxor xmm10,xmm4 > + xor edi,ebp > + mov esi,ebx > + add eax,DWORD[36+rsp] > + pxor xmm6,xmm10 > + xor ecx,edx > + rol ebx,5 > + movdqa XMMWORD[16+rsp],xmm8 > + add eax,edi > + and esi,ecx > + movdqa xmm9,xmm6 > + xor ecx,edx > + add eax,ebx > + ror ebx,7 > + movdqa xmm10,xmm6 > + xor esi,edx > + pslldq xmm9,12 > + paddd xmm6,xmm6 > + mov edi,eax > + add ebp,DWORD[40+rsp] > + psrld xmm10,31 > + xor ebx,ecx > + rol eax,5 > + add ebp,esi > + movdqa xmm8,xmm9 > + and edi,ebx > + xor ebx,ecx > + psrld xmm9,30 > + add ebp,eax > + ror eax,7 > + por xmm6,xmm10 > + xor edi,ecx > + mov esi,ebp > + add edx,DWORD[44+rsp] > + pslld xmm8,2 > + pxor xmm6,xmm9 > + xor eax,ebx > + movdqa xmm9,XMMWORD[((-32))+r14] > + rol ebp,5 > + add edx,edi > + and esi,eax > + pxor xmm6,xmm8 > + xor eax,ebx > + add edx,ebp > + ror ebp,7 > + pshufd xmm7,xmm3,238 > + xor esi,ebx > + movdqa xmm8,xmm6 > + paddd xmm9,xmm6 > + mov edi,edx > + add ecx,DWORD[48+rsp] > + punpcklqdq xmm7,xmm4 > + xor ebp,eax > + rol edx,5 > + add ecx,esi > + psrldq xmm8,4 > + and edi,ebp > + xor ebp,eax > + pxor xmm7,xmm3 > + add ecx,edx > + ror edx,7 > + pxor xmm8,xmm5 > + xor edi,eax > + mov esi,ecx > + add ebx,DWORD[52+rsp] > + pxor xmm7,xmm8 > + xor edx,ebp > + rol ecx,5 > + movdqa XMMWORD[32+rsp],xmm9 > + add ebx,edi > + and esi,edx > + movdqa xmm10,xmm7 > + xor edx,ebp > + add ebx,ecx > + ror ecx,7 > + movdqa xmm8,xmm7 > + xor esi,ebp > + pslldq xmm10,12 > + paddd xmm7,xmm7 > + mov edi,ebx > + add eax,DWORD[56+rsp] > + psrld xmm8,31 > + xor ecx,edx > + rol ebx,5 > + add eax,esi > + movdqa xmm9,xmm10 > + and edi,ecx > + xor ecx,edx > + psrld xmm10,30 > + add eax,ebx > + ror ebx,7 > + por xmm7,xmm8 > + xor edi,edx > + mov esi,eax > + add ebp,DWORD[60+rsp] > + pslld xmm9,2 > + pxor xmm7,xmm10 > + xor ebx,ecx > + movdqa xmm10,XMMWORD[((-32))+r14] > + rol eax,5 > + add ebp,edi > + and esi,ebx > + pxor xmm7,xmm9 > + pshufd xmm9,xmm6,238 > + xor ebx,ecx > + add ebp,eax > + ror eax,7 > + pxor xmm0,xmm4 > + xor esi,ecx > + mov edi,ebp > + add edx,DWORD[rsp] > + punpcklqdq xmm9,xmm7 > + xor eax,ebx > + rol ebp,5 > + pxor xmm0,xmm1 > + add edx,esi > + and edi,eax > + movdqa xmm8,xmm10 > + xor eax,ebx > + paddd xmm10,xmm7 > + add edx,ebp > + pxor xmm0,xmm9 > + ror ebp,7 > + xor edi,ebx > + mov esi,edx > + add ecx,DWORD[4+rsp] > + movdqa xmm9,xmm0 > + xor ebp,eax > + rol edx,5 > + movdqa XMMWORD[48+rsp],xmm10 > + add ecx,edi > + and esi,ebp > + xor ebp,eax > + pslld xmm0,2 > + add ecx,edx > + ror edx,7 > + psrld xmm9,30 > + xor esi,eax > + mov edi,ecx > + add ebx,DWORD[8+rsp] > + por xmm0,xmm9 > + xor edx,ebp > + rol ecx,5 > + pshufd xmm10,xmm7,238 > + add ebx,esi > + and edi,edx > + xor edx,ebp > + add ebx,ecx > + add eax,DWORD[12+rsp] > + xor edi,ebp > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + add eax,ebx > + pxor xmm1,xmm5 > + add ebp,DWORD[16+rsp] > + xor esi,ecx > + punpcklqdq xmm10,xmm0 > + mov edi,eax > + rol eax,5 > + pxor xmm1,xmm2 > + add ebp,esi > + xor edi,ecx > + movdqa xmm9,xmm8 > + ror ebx,7 > + paddd xmm8,xmm0 > + add ebp,eax > + pxor xmm1,xmm10 > + add edx,DWORD[20+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + movdqa xmm10,xmm1 > + add edx,edi > + xor esi,ebx > + movdqa XMMWORD[rsp],xmm8 > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[24+rsp] > + pslld xmm1,2 > + xor esi,eax > + mov edi,edx > + psrld xmm10,30 > + rol edx,5 > + add ecx,esi > + xor edi,eax > + ror ebp,7 > + por xmm1,xmm10 > + add ecx,edx > + add ebx,DWORD[28+rsp] > + pshufd xmm8,xmm0,238 > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + pxor xmm2,xmm6 > + add eax,DWORD[32+rsp] > + xor esi,edx > + punpcklqdq xmm8,xmm1 > + mov edi,ebx > + rol ebx,5 > + pxor xmm2,xmm3 > + add eax,esi > + xor edi,edx > + movdqa xmm10,XMMWORD[r14] > + ror ecx,7 > + paddd xmm9,xmm1 > + add eax,ebx > + pxor xmm2,xmm8 > + add ebp,DWORD[36+rsp] > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + movdqa xmm8,xmm2 > + add ebp,edi > + xor esi,ecx > + movdqa XMMWORD[16+rsp],xmm9 > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[40+rsp] > + pslld xmm2,2 > + xor esi,ebx > + mov edi,ebp > + psrld xmm8,30 > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + por xmm2,xmm8 > + add edx,ebp > + add ecx,DWORD[44+rsp] > + pshufd xmm9,xmm1,238 > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + pxor xmm3,xmm7 > + add ebx,DWORD[48+rsp] > + xor esi,ebp > + punpcklqdq xmm9,xmm2 > + mov edi,ecx > + rol ecx,5 > + pxor xmm3,xmm4 > + add ebx,esi > + xor edi,ebp > + movdqa xmm8,xmm10 > + ror edx,7 > + paddd xmm10,xmm2 > + add ebx,ecx > + pxor xmm3,xmm9 > + add eax,DWORD[52+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + movdqa xmm9,xmm3 > + add eax,edi > + xor esi,edx > + movdqa XMMWORD[32+rsp],xmm10 > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[56+rsp] > + pslld xmm3,2 > + xor esi,ecx > + mov edi,eax > + psrld xmm9,30 > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + por xmm3,xmm9 > + add ebp,eax > + add edx,DWORD[60+rsp] > + pshufd xmm10,xmm2,238 > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + pxor xmm4,xmm0 > + add ecx,DWORD[rsp] > + xor esi,eax > + punpcklqdq xmm10,xmm3 > + mov edi,edx > + rol edx,5 > + pxor xmm4,xmm5 > + add ecx,esi > + xor edi,eax > + movdqa xmm9,xmm8 > + ror ebp,7 > + paddd xmm8,xmm3 > + add ecx,edx > + pxor xmm4,xmm10 > + add ebx,DWORD[4+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + movdqa xmm10,xmm4 > + add ebx,edi > + xor esi,ebp > + movdqa XMMWORD[48+rsp],xmm8 > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[8+rsp] > + pslld xmm4,2 > + xor esi,edx > + mov edi,ebx > + psrld xmm10,30 > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + por xmm4,xmm10 > + add eax,ebx > + add ebp,DWORD[12+rsp] > + pshufd xmm8,xmm3,238 > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + pxor xmm5,xmm1 > + add edx,DWORD[16+rsp] > + xor esi,ebx > + punpcklqdq xmm8,xmm4 > + mov edi,ebp > + rol ebp,5 > + pxor xmm5,xmm6 > + add edx,esi > + xor edi,ebx > + movdqa xmm10,xmm9 > + ror eax,7 > + paddd xmm9,xmm4 > + add edx,ebp > + pxor xmm5,xmm8 > + add ecx,DWORD[20+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + movdqa xmm8,xmm5 > + add ecx,edi > + xor esi,eax > + movdqa XMMWORD[rsp],xmm9 > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[24+rsp] > + pslld xmm5,2 > + xor esi,ebp > + mov edi,ecx > + psrld xmm8,30 > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + por xmm5,xmm8 > + add ebx,ecx > + add eax,DWORD[28+rsp] > + pshufd xmm9,xmm4,238 > + ror ecx,7 > + mov esi,ebx > + xor edi,edx > + rol ebx,5 > + add eax,edi > + xor esi,ecx > + xor ecx,edx > + add eax,ebx > + pxor xmm6,xmm2 > + add ebp,DWORD[32+rsp] > + and esi,ecx > + xor ecx,edx > + ror ebx,7 > + punpcklqdq xmm9,xmm5 > + mov edi,eax > + xor esi,ecx > + pxor xmm6,xmm7 > + rol eax,5 > + add ebp,esi > + movdqa xmm8,xmm10 > + xor edi,ebx > + paddd xmm10,xmm5 > + xor ebx,ecx > + pxor xmm6,xmm9 > + add ebp,eax > + add edx,DWORD[36+rsp] > + and edi,ebx > + xor ebx,ecx > + ror eax,7 > + movdqa xmm9,xmm6 > + mov esi,ebp > + xor edi,ebx > + movdqa XMMWORD[16+rsp],xmm10 > + rol ebp,5 > + add edx,edi > + xor esi,eax > + pslld xmm6,2 > + xor eax,ebx > + add edx,ebp > + psrld xmm9,30 > + add ecx,DWORD[40+rsp] > + and esi,eax > + xor eax,ebx > + por xmm6,xmm9 > + ror ebp,7 > + mov edi,edx > + xor esi,eax > + rol edx,5 > + pshufd xmm10,xmm5,238 > + add ecx,esi > + xor edi,ebp > + xor ebp,eax > + add ecx,edx > + add ebx,DWORD[44+rsp] > + and edi,ebp > + xor ebp,eax > + ror edx,7 > + mov esi,ecx > + xor edi,ebp > + rol ecx,5 > + add ebx,edi > + xor esi,edx > + xor edx,ebp > + add ebx,ecx > + pxor xmm7,xmm3 > + add eax,DWORD[48+rsp] > + and esi,edx > + xor edx,ebp > + ror ecx,7 > + punpcklqdq xmm10,xmm6 > + mov edi,ebx > + xor esi,edx > + pxor xmm7,xmm0 > + rol ebx,5 > + add eax,esi > + movdqa xmm9,XMMWORD[32+r14] > + xor edi,ecx > + paddd xmm8,xmm6 > + xor ecx,edx > + pxor xmm7,xmm10 > + add eax,ebx > + add ebp,DWORD[52+rsp] > + and edi,ecx > + xor ecx,edx > + ror ebx,7 > + movdqa xmm10,xmm7 > + mov esi,eax > + xor edi,ecx > + movdqa XMMWORD[32+rsp],xmm8 > + rol eax,5 > + add ebp,edi > + xor esi,ebx > + pslld xmm7,2 > + xor ebx,ecx > + add ebp,eax > + psrld xmm10,30 > + add edx,DWORD[56+rsp] > + and esi,ebx > + xor ebx,ecx > + por xmm7,xmm10 > + ror eax,7 > + mov edi,ebp > + xor esi,ebx > + rol ebp,5 > + pshufd xmm8,xmm6,238 > + add edx,esi > + xor edi,eax > + xor eax,ebx > + add edx,ebp > + add ecx,DWORD[60+rsp] > + and edi,eax > + xor eax,ebx > + ror ebp,7 > + mov esi,edx > + xor edi,eax > + rol edx,5 > + add ecx,edi > + xor esi,ebp > + xor ebp,eax > + add ecx,edx > + pxor xmm0,xmm4 > + add ebx,DWORD[rsp] > + and esi,ebp > + xor ebp,eax > + ror edx,7 > + punpcklqdq xmm8,xmm7 > + mov edi,ecx > + xor esi,ebp > + pxor xmm0,xmm1 > + rol ecx,5 > + add ebx,esi > + movdqa xmm10,xmm9 > + xor edi,edx > + paddd xmm9,xmm7 > + xor edx,ebp > + pxor xmm0,xmm8 > + add ebx,ecx > + add eax,DWORD[4+rsp] > + and edi,edx > + xor edx,ebp > + ror ecx,7 > + movdqa xmm8,xmm0 > + mov esi,ebx > + xor edi,edx > + movdqa XMMWORD[48+rsp],xmm9 > + rol ebx,5 > + add eax,edi > + xor esi,ecx > + pslld xmm0,2 > + xor ecx,edx > + add eax,ebx > + psrld xmm8,30 > + add ebp,DWORD[8+rsp] > + and esi,ecx > + xor ecx,edx > + por xmm0,xmm8 > + ror ebx,7 > + mov edi,eax > + xor esi,ecx > + rol eax,5 > + pshufd xmm9,xmm7,238 > + add ebp,esi > + xor edi,ebx > + xor ebx,ecx > + add ebp,eax > + add edx,DWORD[12+rsp] > + and edi,ebx > + xor ebx,ecx > + ror eax,7 > + mov esi,ebp > + xor edi,ebx > + rol ebp,5 > + add edx,edi > + xor esi,eax > + xor eax,ebx > + add edx,ebp > + pxor xmm1,xmm5 > + add ecx,DWORD[16+rsp] > + and esi,eax > + xor eax,ebx > + ror ebp,7 > + punpcklqdq xmm9,xmm0 > + mov edi,edx > + xor esi,eax > + pxor xmm1,xmm2 > + rol edx,5 > + add ecx,esi > + movdqa xmm8,xmm10 > + xor edi,ebp > + paddd xmm10,xmm0 > + xor ebp,eax > + pxor xmm1,xmm9 > + add ecx,edx > + add ebx,DWORD[20+rsp] > + and edi,ebp > + xor ebp,eax > + ror edx,7 > + movdqa xmm9,xmm1 > + mov esi,ecx > + xor edi,ebp > + movdqa XMMWORD[rsp],xmm10 > + rol ecx,5 > + add ebx,edi > + xor esi,edx > + pslld xmm1,2 > + xor edx,ebp > + add ebx,ecx > + psrld xmm9,30 > + add eax,DWORD[24+rsp] > + and esi,edx > + xor edx,ebp > + por xmm1,xmm9 > + ror ecx,7 > + mov edi,ebx > + xor esi,edx > + rol ebx,5 > + pshufd xmm10,xmm0,238 > + add eax,esi > + xor edi,ecx > + xor ecx,edx > + add eax,ebx > + add ebp,DWORD[28+rsp] > + and edi,ecx > + xor ecx,edx > + ror ebx,7 > + mov esi,eax > + xor edi,ecx > + rol eax,5 > + add ebp,edi > + xor esi,ebx > + xor ebx,ecx > + add ebp,eax > + pxor xmm2,xmm6 > + add edx,DWORD[32+rsp] > + and esi,ebx > + xor ebx,ecx > + ror eax,7 > + punpcklqdq xmm10,xmm1 > + mov edi,ebp > + xor esi,ebx > + pxor xmm2,xmm3 > + rol ebp,5 > + add edx,esi > + movdqa xmm9,xmm8 > + xor edi,eax > + paddd xmm8,xmm1 > + xor eax,ebx > + pxor xmm2,xmm10 > + add edx,ebp > + add ecx,DWORD[36+rsp] > + and edi,eax > + xor eax,ebx > + ror ebp,7 > + movdqa xmm10,xmm2 > + mov esi,edx > + xor edi,eax > + movdqa XMMWORD[16+rsp],xmm8 > + rol edx,5 > + add ecx,edi > + xor esi,ebp > + pslld xmm2,2 > + xor ebp,eax > + add ecx,edx > + psrld xmm10,30 > + add ebx,DWORD[40+rsp] > + and esi,ebp > + xor ebp,eax > + por xmm2,xmm10 > + ror edx,7 > + mov edi,ecx > + xor esi,ebp > + rol ecx,5 > + pshufd xmm8,xmm1,238 > + add ebx,esi > + xor edi,edx > + xor edx,ebp > + add ebx,ecx > + add eax,DWORD[44+rsp] > + and edi,edx > + xor edx,ebp > + ror ecx,7 > + mov esi,ebx > + xor edi,edx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + add eax,ebx > + pxor xmm3,xmm7 > + add ebp,DWORD[48+rsp] > + xor esi,ecx > + punpcklqdq xmm8,xmm2 > + mov edi,eax > + rol eax,5 > + pxor xmm3,xmm4 > + add ebp,esi > + xor edi,ecx > + movdqa xmm10,xmm9 > + ror ebx,7 > + paddd xmm9,xmm2 > + add ebp,eax > + pxor xmm3,xmm8 > + add edx,DWORD[52+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + movdqa xmm8,xmm3 > + add edx,edi > + xor esi,ebx > + movdqa XMMWORD[32+rsp],xmm9 > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[56+rsp] > + pslld xmm3,2 > + xor esi,eax > + mov edi,edx > + psrld xmm8,30 > + rol edx,5 > + add ecx,esi > + xor edi,eax > + ror ebp,7 > + por xmm3,xmm8 > + add ecx,edx > + add ebx,DWORD[60+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + paddd xmm10,xmm3 > + add eax,esi > + xor edi,edx > + movdqa XMMWORD[48+rsp],xmm10 > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[4+rsp] > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[8+rsp] > + xor esi,ebx > + mov edi,ebp > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[12+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + cmp r9,r10 > + je NEAR $L$done_ssse3 > + movdqa xmm6,XMMWORD[64+r14] > + movdqa xmm9,XMMWORD[((-64))+r14] > + movdqu xmm0,XMMWORD[r9] > + movdqu xmm1,XMMWORD[16+r9] > + movdqu xmm2,XMMWORD[32+r9] > + movdqu xmm3,XMMWORD[48+r9] > +DB 102,15,56,0,198 > + add r9,64 > + add ebx,DWORD[16+rsp] > + xor esi,ebp > + mov edi,ecx > +DB 102,15,56,0,206 > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + paddd xmm0,xmm9 > + add ebx,ecx > + add eax,DWORD[20+rsp] > + xor edi,edx > + mov esi,ebx > + movdqa XMMWORD[rsp],xmm0 > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + psubd xmm0,xmm9 > + add eax,ebx > + add ebp,DWORD[24+rsp] > + xor esi,ecx > + mov edi,eax > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[28+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[32+rsp] > + xor esi,eax > + mov edi,edx > +DB 102,15,56,0,214 > + rol edx,5 > + add ecx,esi > + xor edi,eax > + ror ebp,7 > + paddd xmm1,xmm9 > + add ecx,edx > + add ebx,DWORD[36+rsp] > + xor edi,ebp > + mov esi,ecx > + movdqa XMMWORD[16+rsp],xmm1 > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + psubd xmm1,xmm9 > + add ebx,ecx > + add eax,DWORD[40+rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[44+rsp] > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[48+rsp] > + xor esi,ebx > + mov edi,ebp > +DB 102,15,56,0,222 > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + paddd xmm2,xmm9 > + add edx,ebp > + add ecx,DWORD[52+rsp] > + xor edi,eax > + mov esi,edx > + movdqa XMMWORD[32+rsp],xmm2 > + rol edx,5 > + add ecx,edi > + xor esi,eax > + ror ebp,7 > + psubd xmm2,xmm9 > + add ecx,edx > + add ebx,DWORD[56+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[60+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + ror ecx,7 > + add eax,ebx > + add eax,DWORD[r8] > + add esi,DWORD[4+r8] > + add ecx,DWORD[8+r8] > + add edx,DWORD[12+r8] > + mov DWORD[r8],eax > + add ebp,DWORD[16+r8] > + mov DWORD[4+r8],esi > + mov ebx,esi > + mov DWORD[8+r8],ecx > + mov edi,ecx > + mov DWORD[12+r8],edx > + xor edi,edx > + mov DWORD[16+r8],ebp > + and esi,edi > + jmp NEAR $L$oop_ssse3 > + > +ALIGN 16 > +$L$done_ssse3: > + add ebx,DWORD[16+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[20+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + xor esi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[24+rsp] > + xor esi,ecx > + mov edi,eax > + rol eax,5 > + add ebp,esi > + xor edi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[28+rsp] > + xor edi,ebx > + mov esi,ebp > + rol ebp,5 > + add edx,edi > + xor esi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[32+rsp] > + xor esi,eax > + mov edi,edx > + rol edx,5 > + add ecx,esi > + xor edi,eax > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[36+rsp] > + xor edi,ebp > + mov esi,ecx > + rol ecx,5 > + add ebx,edi > + xor esi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[40+rsp] > + xor esi,edx > + mov edi,ebx > + rol ebx,5 > + add eax,esi > + xor edi,edx > + ror ecx,7 > + add eax,ebx > + add ebp,DWORD[44+rsp] > + xor edi,ecx > + mov esi,eax > + rol eax,5 > + add ebp,edi > + xor esi,ecx > + ror ebx,7 > + add ebp,eax > + add edx,DWORD[48+rsp] > + xor esi,ebx > + mov edi,ebp > + rol ebp,5 > + add edx,esi > + xor edi,ebx > + ror eax,7 > + add edx,ebp > + add ecx,DWORD[52+rsp] > + xor edi,eax > + mov esi,edx > + rol edx,5 > + add ecx,edi > + xor esi,eax > + ror ebp,7 > + add ecx,edx > + add ebx,DWORD[56+rsp] > + xor esi,ebp > + mov edi,ecx > + rol ecx,5 > + add ebx,esi > + xor edi,ebp > + ror edx,7 > + add ebx,ecx > + add eax,DWORD[60+rsp] > + xor edi,edx > + mov esi,ebx > + rol ebx,5 > + add eax,edi > + ror ecx,7 > + add eax,ebx > + add eax,DWORD[r8] > + add esi,DWORD[4+r8] > + add ecx,DWORD[8+r8] > + mov DWORD[r8],eax > + add edx,DWORD[12+r8] > + mov DWORD[4+r8],esi > + add ebp,DWORD[16+r8] > + mov DWORD[8+r8],ecx > + mov DWORD[12+r8],edx > + mov DWORD[16+r8],ebp > + movaps xmm6,XMMWORD[((-40-96))+r11] > + movaps xmm7,XMMWORD[((-40-80))+r11] > + movaps xmm8,XMMWORD[((-40-64))+r11] > + movaps xmm9,XMMWORD[((-40-48))+r11] > + movaps xmm10,XMMWORD[((-40-32))+r11] > + movaps xmm11,XMMWORD[((-40-16))+r11] > + mov r14,QWORD[((-40))+r11] > + > + mov r13,QWORD[((-32))+r11] > + > + mov r12,QWORD[((-24))+r11] > + > + mov rbp,QWORD[((-16))+r11] > + > + mov rbx,QWORD[((-8))+r11] > + > + lea rsp,[r11] > + > +$L$epilogue_ssse3: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha1_block_data_order_ssse3: > +ALIGN 64 > +K_XX_XX: > + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > +DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 > +DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44 > +DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60 > +DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114 > +DB 103,62,0 > +ALIGN 64 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + lea r10,[$L$prologue] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[152+r8] > + > + lea r10,[$L$epilogue] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + mov rax,QWORD[64+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + > + jmp NEAR $L$common_seh_tail > + > + > +ALIGN 16 > +shaext_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + lea r10,[$L$prologue_shaext] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + lea r10,[$L$epilogue_shaext] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + lea rsi,[((-8-64))+rax] > + lea rdi,[512+r8] > + mov ecx,8 > + DD 0xa548f3fc > + > + jmp NEAR $L$common_seh_tail > + > + > +ALIGN 16 > +ssse3_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$common_seh_tail > + > + mov rax,QWORD[208+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$common_seh_tail > + > + lea rsi,[((-40-96))+rax] > + lea rdi,[512+r8] > + mov ecx,12 > + DD 0xa548f3fc > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + > +$L$common_seh_tail: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase > + DD $L$SEH_end_sha1_block_data_order wrt ..imagebase > + DD $L$SEH_info_sha1_block_data_order wrt ..imagebase > + DD $L$SEH_begin_sha1_block_data_order_shaext wrt ..imagebas= e > + DD $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase > + DD $L$SEH_info_sha1_block_data_order_shaext wrt ..imagebase > + DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase > + DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase > + DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_sha1_block_data_order: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > +$L$SEH_info_sha1_block_data_order_shaext: > +DB 9,0,0,0 > + DD shaext_handler wrt ..imagebase > +$L$SEH_info_sha1_block_data_order_ssse3: > +DB 9,0,0,0 > + DD ssse3_handler wrt ..imagebase > + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb- > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb- > x86_64.nasm > new file mode 100644 > index 0000000000..7cd5eae85c > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm > @@ -0,0 +1,3461 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl > +; > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > + > +global sha256_multi_block > + > +ALIGN 32 > +sha256_multi_block: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha256_multi_block: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov rcx,QWORD[((OPENSSL_ia32cap_P+4))] > + bt rcx,61 > + jc NEAR _shaext_shortcut > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[(-120)+rax],xmm10 > + movaps XMMWORD[(-104)+rax],xmm11 > + movaps XMMWORD[(-88)+rax],xmm12 > + movaps XMMWORD[(-72)+rax],xmm13 > + movaps XMMWORD[(-56)+rax],xmm14 > + movaps XMMWORD[(-40)+rax],xmm15 > + sub rsp,288 > + and rsp,-256 > + mov QWORD[272+rsp],rax > + > +$L$body: > + lea rbp,[((K256+128))] > + lea rbx,[256+rsp] > + lea rdi,[128+rdi] > + > +$L$oop_grande: > + mov DWORD[280+rsp],edx > + xor edx,edx > + mov r8,QWORD[rsi] > + mov ecx,DWORD[8+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[rbx],ecx > + cmovle r8,rbp > + mov r9,QWORD[16+rsi] > + mov ecx,DWORD[24+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[4+rbx],ecx > + cmovle r9,rbp > + mov r10,QWORD[32+rsi] > + mov ecx,DWORD[40+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[8+rbx],ecx > + cmovle r10,rbp > + mov r11,QWORD[48+rsi] > + mov ecx,DWORD[56+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[12+rbx],ecx > + cmovle r11,rbp > + test edx,edx > + jz NEAR $L$done > + > + movdqu xmm8,XMMWORD[((0-128))+rdi] > + lea rax,[128+rsp] > + movdqu xmm9,XMMWORD[((32-128))+rdi] > + movdqu xmm10,XMMWORD[((64-128))+rdi] > + movdqu xmm11,XMMWORD[((96-128))+rdi] > + movdqu xmm12,XMMWORD[((128-128))+rdi] > + movdqu xmm13,XMMWORD[((160-128))+rdi] > + movdqu xmm14,XMMWORD[((192-128))+rdi] > + movdqu xmm15,XMMWORD[((224-128))+rdi] > + movdqu xmm6,XMMWORD[$L$pbswap] > + jmp NEAR $L$oop > + > +ALIGN 32 > +$L$oop: > + movdqa xmm4,xmm10 > + pxor xmm4,xmm9 > + movd xmm5,DWORD[r8] > + movd xmm0,DWORD[r9] > + movd xmm1,DWORD[r10] > + movd xmm2,DWORD[r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm12 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm12 > + > + psrld xmm7,6 > + movdqa xmm1,xmm12 > + pslld xmm2,7 > + movdqa XMMWORD[(0-128)+rax],xmm5 > + paddd xmm5,xmm15 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-128))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm12 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm12 > + pslld xmm2,26-21 > + pandn xmm0,xmm14 > + pand xmm3,xmm13 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm8 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm8 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm9 > + movdqa xmm7,xmm8 > + pslld xmm2,10 > + pxor xmm3,xmm8 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm15,xmm9 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm15,xmm4 > + paddd xmm11,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm15,xmm5 > + paddd xmm15,xmm7 > + movd xmm5,DWORD[4+r8] > + movd xmm0,DWORD[4+r9] > + movd xmm1,DWORD[4+r10] > + movd xmm2,DWORD[4+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm11 > + > + movdqa xmm2,xmm11 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm11 > + pslld xmm2,7 > + movdqa XMMWORD[(16-128)+rax],xmm5 > + paddd xmm5,xmm14 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-96))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm11 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm11 > + pslld xmm2,26-21 > + pandn xmm0,xmm13 > + pand xmm4,xmm12 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm15 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm15 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm8 > + movdqa xmm7,xmm15 > + pslld xmm2,10 > + pxor xmm4,xmm15 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm14,xmm8 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm14,xmm3 > + paddd xmm10,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm14,xmm5 > + paddd xmm14,xmm7 > + movd xmm5,DWORD[8+r8] > + movd xmm0,DWORD[8+r9] > + movd xmm1,DWORD[8+r10] > + movd xmm2,DWORD[8+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm10 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm10 > + > + psrld xmm7,6 > + movdqa xmm1,xmm10 > + pslld xmm2,7 > + movdqa XMMWORD[(32-128)+rax],xmm5 > + paddd xmm5,xmm13 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-64))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm10 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm10 > + pslld xmm2,26-21 > + pandn xmm0,xmm12 > + pand xmm3,xmm11 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm14 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm14 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm15 > + movdqa xmm7,xmm14 > + pslld xmm2,10 > + pxor xmm3,xmm14 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm13,xmm15 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm13,xmm4 > + paddd xmm9,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm13,xmm5 > + paddd xmm13,xmm7 > + movd xmm5,DWORD[12+r8] > + movd xmm0,DWORD[12+r9] > + movd xmm1,DWORD[12+r10] > + movd xmm2,DWORD[12+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm9 > + > + movdqa xmm2,xmm9 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm9 > + pslld xmm2,7 > + movdqa XMMWORD[(48-128)+rax],xmm5 > + paddd xmm5,xmm12 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-32))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm9 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm9 > + pslld xmm2,26-21 > + pandn xmm0,xmm11 > + pand xmm4,xmm10 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm13 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm13 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm14 > + movdqa xmm7,xmm13 > + pslld xmm2,10 > + pxor xmm4,xmm13 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm12,xmm14 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm12,xmm3 > + paddd xmm8,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm12,xmm5 > + paddd xmm12,xmm7 > + movd xmm5,DWORD[16+r8] > + movd xmm0,DWORD[16+r9] > + movd xmm1,DWORD[16+r10] > + movd xmm2,DWORD[16+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm8 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm8 > + > + psrld xmm7,6 > + movdqa xmm1,xmm8 > + pslld xmm2,7 > + movdqa XMMWORD[(64-128)+rax],xmm5 > + paddd xmm5,xmm11 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm8 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm8 > + pslld xmm2,26-21 > + pandn xmm0,xmm10 > + pand xmm3,xmm9 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm12 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm12 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm13 > + movdqa xmm7,xmm12 > + pslld xmm2,10 > + pxor xmm3,xmm12 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm11,xmm13 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm11,xmm4 > + paddd xmm15,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm11,xmm5 > + paddd xmm11,xmm7 > + movd xmm5,DWORD[20+r8] > + movd xmm0,DWORD[20+r9] > + movd xmm1,DWORD[20+r10] > + movd xmm2,DWORD[20+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm15 > + > + movdqa xmm2,xmm15 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm15 > + pslld xmm2,7 > + movdqa XMMWORD[(80-128)+rax],xmm5 > + paddd xmm5,xmm10 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[32+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm15 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm15 > + pslld xmm2,26-21 > + pandn xmm0,xmm9 > + pand xmm4,xmm8 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm11 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm11 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm12 > + movdqa xmm7,xmm11 > + pslld xmm2,10 > + pxor xmm4,xmm11 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm10,xmm12 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm10,xmm3 > + paddd xmm14,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm10,xmm5 > + paddd xmm10,xmm7 > + movd xmm5,DWORD[24+r8] > + movd xmm0,DWORD[24+r9] > + movd xmm1,DWORD[24+r10] > + movd xmm2,DWORD[24+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm14 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm14 > + > + psrld xmm7,6 > + movdqa xmm1,xmm14 > + pslld xmm2,7 > + movdqa XMMWORD[(96-128)+rax],xmm5 > + paddd xmm5,xmm9 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[64+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm14 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm14 > + pslld xmm2,26-21 > + pandn xmm0,xmm8 > + pand xmm3,xmm15 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm10 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm10 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm11 > + movdqa xmm7,xmm10 > + pslld xmm2,10 > + pxor xmm3,xmm10 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm9,xmm11 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm9,xmm4 > + paddd xmm13,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm9,xmm5 > + paddd xmm9,xmm7 > + movd xmm5,DWORD[28+r8] > + movd xmm0,DWORD[28+r9] > + movd xmm1,DWORD[28+r10] > + movd xmm2,DWORD[28+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm13 > + > + movdqa xmm2,xmm13 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm13 > + pslld xmm2,7 > + movdqa XMMWORD[(112-128)+rax],xmm5 > + paddd xmm5,xmm8 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[96+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm13 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm13 > + pslld xmm2,26-21 > + pandn xmm0,xmm15 > + pand xmm4,xmm14 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm9 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm9 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm10 > + movdqa xmm7,xmm9 > + pslld xmm2,10 > + pxor xmm4,xmm9 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm8,xmm10 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm8,xmm3 > + paddd xmm12,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm8,xmm5 > + paddd xmm8,xmm7 > + lea rbp,[256+rbp] > + movd xmm5,DWORD[32+r8] > + movd xmm0,DWORD[32+r9] > + movd xmm1,DWORD[32+r10] > + movd xmm2,DWORD[32+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm12 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm12 > + > + psrld xmm7,6 > + movdqa xmm1,xmm12 > + pslld xmm2,7 > + movdqa XMMWORD[(128-128)+rax],xmm5 > + paddd xmm5,xmm15 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-128))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm12 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm12 > + pslld xmm2,26-21 > + pandn xmm0,xmm14 > + pand xmm3,xmm13 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm8 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm8 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm9 > + movdqa xmm7,xmm8 > + pslld xmm2,10 > + pxor xmm3,xmm8 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm15,xmm9 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm15,xmm4 > + paddd xmm11,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm15,xmm5 > + paddd xmm15,xmm7 > + movd xmm5,DWORD[36+r8] > + movd xmm0,DWORD[36+r9] > + movd xmm1,DWORD[36+r10] > + movd xmm2,DWORD[36+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm11 > + > + movdqa xmm2,xmm11 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm11 > + pslld xmm2,7 > + movdqa XMMWORD[(144-128)+rax],xmm5 > + paddd xmm5,xmm14 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-96))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm11 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm11 > + pslld xmm2,26-21 > + pandn xmm0,xmm13 > + pand xmm4,xmm12 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm15 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm15 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm8 > + movdqa xmm7,xmm15 > + pslld xmm2,10 > + pxor xmm4,xmm15 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm14,xmm8 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm14,xmm3 > + paddd xmm10,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm14,xmm5 > + paddd xmm14,xmm7 > + movd xmm5,DWORD[40+r8] > + movd xmm0,DWORD[40+r9] > + movd xmm1,DWORD[40+r10] > + movd xmm2,DWORD[40+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm10 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm10 > + > + psrld xmm7,6 > + movdqa xmm1,xmm10 > + pslld xmm2,7 > + movdqa XMMWORD[(160-128)+rax],xmm5 > + paddd xmm5,xmm13 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-64))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm10 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm10 > + pslld xmm2,26-21 > + pandn xmm0,xmm12 > + pand xmm3,xmm11 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm14 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm14 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm15 > + movdqa xmm7,xmm14 > + pslld xmm2,10 > + pxor xmm3,xmm14 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm13,xmm15 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm13,xmm4 > + paddd xmm9,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm13,xmm5 > + paddd xmm13,xmm7 > + movd xmm5,DWORD[44+r8] > + movd xmm0,DWORD[44+r9] > + movd xmm1,DWORD[44+r10] > + movd xmm2,DWORD[44+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm9 > + > + movdqa xmm2,xmm9 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm9 > + pslld xmm2,7 > + movdqa XMMWORD[(176-128)+rax],xmm5 > + paddd xmm5,xmm12 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-32))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm9 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm9 > + pslld xmm2,26-21 > + pandn xmm0,xmm11 > + pand xmm4,xmm10 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm13 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm13 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm14 > + movdqa xmm7,xmm13 > + pslld xmm2,10 > + pxor xmm4,xmm13 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm12,xmm14 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm12,xmm3 > + paddd xmm8,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm12,xmm5 > + paddd xmm12,xmm7 > + movd xmm5,DWORD[48+r8] > + movd xmm0,DWORD[48+r9] > + movd xmm1,DWORD[48+r10] > + movd xmm2,DWORD[48+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm8 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm8 > + > + psrld xmm7,6 > + movdqa xmm1,xmm8 > + pslld xmm2,7 > + movdqa XMMWORD[(192-128)+rax],xmm5 > + paddd xmm5,xmm11 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm8 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm8 > + pslld xmm2,26-21 > + pandn xmm0,xmm10 > + pand xmm3,xmm9 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm12 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm12 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm13 > + movdqa xmm7,xmm12 > + pslld xmm2,10 > + pxor xmm3,xmm12 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm11,xmm13 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm11,xmm4 > + paddd xmm15,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm11,xmm5 > + paddd xmm11,xmm7 > + movd xmm5,DWORD[52+r8] > + movd xmm0,DWORD[52+r9] > + movd xmm1,DWORD[52+r10] > + movd xmm2,DWORD[52+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm15 > + > + movdqa xmm2,xmm15 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm15 > + pslld xmm2,7 > + movdqa XMMWORD[(208-128)+rax],xmm5 > + paddd xmm5,xmm10 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[32+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm15 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm15 > + pslld xmm2,26-21 > + pandn xmm0,xmm9 > + pand xmm4,xmm8 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm11 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm11 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm12 > + movdqa xmm7,xmm11 > + pslld xmm2,10 > + pxor xmm4,xmm11 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm10,xmm12 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm10,xmm3 > + paddd xmm14,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm10,xmm5 > + paddd xmm10,xmm7 > + movd xmm5,DWORD[56+r8] > + movd xmm0,DWORD[56+r9] > + movd xmm1,DWORD[56+r10] > + movd xmm2,DWORD[56+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm14 > +DB 102,15,56,0,238 > + movdqa xmm2,xmm14 > + > + psrld xmm7,6 > + movdqa xmm1,xmm14 > + pslld xmm2,7 > + movdqa XMMWORD[(224-128)+rax],xmm5 > + paddd xmm5,xmm9 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[64+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm14 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm14 > + pslld xmm2,26-21 > + pandn xmm0,xmm8 > + pand xmm3,xmm15 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm10 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm10 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm11 > + movdqa xmm7,xmm10 > + pslld xmm2,10 > + pxor xmm3,xmm10 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm9,xmm11 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm9,xmm4 > + paddd xmm13,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm9,xmm5 > + paddd xmm9,xmm7 > + movd xmm5,DWORD[60+r8] > + lea r8,[64+r8] > + movd xmm0,DWORD[60+r9] > + lea r9,[64+r9] > + movd xmm1,DWORD[60+r10] > + lea r10,[64+r10] > + movd xmm2,DWORD[60+r11] > + lea r11,[64+r11] > + punpckldq xmm5,xmm1 > + punpckldq xmm0,xmm2 > + punpckldq xmm5,xmm0 > + movdqa xmm7,xmm13 > + > + movdqa xmm2,xmm13 > +DB 102,15,56,0,238 > + psrld xmm7,6 > + movdqa xmm1,xmm13 > + pslld xmm2,7 > + movdqa XMMWORD[(240-128)+rax],xmm5 > + paddd xmm5,xmm8 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[96+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm13 > + prefetcht0 [63+r8] > + pxor xmm7,xmm2 > + movdqa xmm4,xmm13 > + pslld xmm2,26-21 > + pandn xmm0,xmm15 > + pand xmm4,xmm14 > + pxor xmm7,xmm1 > + > + prefetcht0 [63+r9] > + movdqa xmm1,xmm9 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm9 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm10 > + movdqa xmm7,xmm9 > + pslld xmm2,10 > + pxor xmm4,xmm9 > + > + prefetcht0 [63+r10] > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + prefetcht0 [63+r11] > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm8,xmm10 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm8,xmm3 > + paddd xmm12,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm8,xmm5 > + paddd xmm8,xmm7 > + lea rbp,[256+rbp] > + movdqu xmm5,XMMWORD[((0-128))+rax] > + mov ecx,3 > + jmp NEAR $L$oop_16_xx > +ALIGN 32 > +$L$oop_16_xx: > + movdqa xmm6,XMMWORD[((16-128))+rax] > + paddd xmm5,XMMWORD[((144-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((224-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm12 > + > + movdqa xmm2,xmm12 > + > + psrld xmm7,6 > + movdqa xmm1,xmm12 > + pslld xmm2,7 > + movdqa XMMWORD[(0-128)+rax],xmm5 > + paddd xmm5,xmm15 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-128))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm12 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm12 > + pslld xmm2,26-21 > + pandn xmm0,xmm14 > + pand xmm3,xmm13 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm8 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm8 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm9 > + movdqa xmm7,xmm8 > + pslld xmm2,10 > + pxor xmm3,xmm8 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm15,xmm9 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm15,xmm4 > + paddd xmm11,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm15,xmm5 > + paddd xmm15,xmm7 > + movdqa xmm5,XMMWORD[((32-128))+rax] > + paddd xmm6,XMMWORD[((160-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((240-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm11 > + > + movdqa xmm2,xmm11 > + > + psrld xmm7,6 > + movdqa xmm1,xmm11 > + pslld xmm2,7 > + movdqa XMMWORD[(16-128)+rax],xmm6 > + paddd xmm6,xmm14 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[((-96))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm11 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm11 > + pslld xmm2,26-21 > + pandn xmm0,xmm13 > + pand xmm4,xmm12 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm15 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm15 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm8 > + movdqa xmm7,xmm15 > + pslld xmm2,10 > + pxor xmm4,xmm15 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm14,xmm8 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm14,xmm3 > + paddd xmm10,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm14,xmm6 > + paddd xmm14,xmm7 > + movdqa xmm6,XMMWORD[((48-128))+rax] > + paddd xmm5,XMMWORD[((176-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((0-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm10 > + > + movdqa xmm2,xmm10 > + > + psrld xmm7,6 > + movdqa xmm1,xmm10 > + pslld xmm2,7 > + movdqa XMMWORD[(32-128)+rax],xmm5 > + paddd xmm5,xmm13 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-64))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm10 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm10 > + pslld xmm2,26-21 > + pandn xmm0,xmm12 > + pand xmm3,xmm11 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm14 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm14 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm15 > + movdqa xmm7,xmm14 > + pslld xmm2,10 > + pxor xmm3,xmm14 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm13,xmm15 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm13,xmm4 > + paddd xmm9,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm13,xmm5 > + paddd xmm13,xmm7 > + movdqa xmm5,XMMWORD[((64-128))+rax] > + paddd xmm6,XMMWORD[((192-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((16-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm9 > + > + movdqa xmm2,xmm9 > + > + psrld xmm7,6 > + movdqa xmm1,xmm9 > + pslld xmm2,7 > + movdqa XMMWORD[(48-128)+rax],xmm6 > + paddd xmm6,xmm12 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[((-32))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm9 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm9 > + pslld xmm2,26-21 > + pandn xmm0,xmm11 > + pand xmm4,xmm10 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm13 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm13 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm14 > + movdqa xmm7,xmm13 > + pslld xmm2,10 > + pxor xmm4,xmm13 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm12,xmm14 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm12,xmm3 > + paddd xmm8,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm12,xmm6 > + paddd xmm12,xmm7 > + movdqa xmm6,XMMWORD[((80-128))+rax] > + paddd xmm5,XMMWORD[((208-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((32-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm8 > + > + movdqa xmm2,xmm8 > + > + psrld xmm7,6 > + movdqa xmm1,xmm8 > + pslld xmm2,7 > + movdqa XMMWORD[(64-128)+rax],xmm5 > + paddd xmm5,xmm11 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm8 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm8 > + pslld xmm2,26-21 > + pandn xmm0,xmm10 > + pand xmm3,xmm9 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm12 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm12 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm13 > + movdqa xmm7,xmm12 > + pslld xmm2,10 > + pxor xmm3,xmm12 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm11,xmm13 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm11,xmm4 > + paddd xmm15,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm11,xmm5 > + paddd xmm11,xmm7 > + movdqa xmm5,XMMWORD[((96-128))+rax] > + paddd xmm6,XMMWORD[((224-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((48-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm15 > + > + movdqa xmm2,xmm15 > + > + psrld xmm7,6 > + movdqa xmm1,xmm15 > + pslld xmm2,7 > + movdqa XMMWORD[(80-128)+rax],xmm6 > + paddd xmm6,xmm10 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[32+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm15 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm15 > + pslld xmm2,26-21 > + pandn xmm0,xmm9 > + pand xmm4,xmm8 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm11 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm11 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm12 > + movdqa xmm7,xmm11 > + pslld xmm2,10 > + pxor xmm4,xmm11 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm10,xmm12 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm10,xmm3 > + paddd xmm14,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm10,xmm6 > + paddd xmm10,xmm7 > + movdqa xmm6,XMMWORD[((112-128))+rax] > + paddd xmm5,XMMWORD[((240-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((64-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm14 > + > + movdqa xmm2,xmm14 > + > + psrld xmm7,6 > + movdqa xmm1,xmm14 > + pslld xmm2,7 > + movdqa XMMWORD[(96-128)+rax],xmm5 > + paddd xmm5,xmm9 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[64+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm14 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm14 > + pslld xmm2,26-21 > + pandn xmm0,xmm8 > + pand xmm3,xmm15 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm10 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm10 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm11 > + movdqa xmm7,xmm10 > + pslld xmm2,10 > + pxor xmm3,xmm10 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm9,xmm11 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm9,xmm4 > + paddd xmm13,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm9,xmm5 > + paddd xmm9,xmm7 > + movdqa xmm5,XMMWORD[((128-128))+rax] > + paddd xmm6,XMMWORD[((0-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((80-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm13 > + > + movdqa xmm2,xmm13 > + > + psrld xmm7,6 > + movdqa xmm1,xmm13 > + pslld xmm2,7 > + movdqa XMMWORD[(112-128)+rax],xmm6 > + paddd xmm6,xmm8 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[96+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm13 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm13 > + pslld xmm2,26-21 > + pandn xmm0,xmm15 > + pand xmm4,xmm14 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm9 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm9 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm10 > + movdqa xmm7,xmm9 > + pslld xmm2,10 > + pxor xmm4,xmm9 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm8,xmm10 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm8,xmm3 > + paddd xmm12,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm8,xmm6 > + paddd xmm8,xmm7 > + lea rbp,[256+rbp] > + movdqa xmm6,XMMWORD[((144-128))+rax] > + paddd xmm5,XMMWORD[((16-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((96-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm12 > + > + movdqa xmm2,xmm12 > + > + psrld xmm7,6 > + movdqa xmm1,xmm12 > + pslld xmm2,7 > + movdqa XMMWORD[(128-128)+rax],xmm5 > + paddd xmm5,xmm15 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-128))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm12 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm12 > + pslld xmm2,26-21 > + pandn xmm0,xmm14 > + pand xmm3,xmm13 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm8 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm8 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm9 > + movdqa xmm7,xmm8 > + pslld xmm2,10 > + pxor xmm3,xmm8 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm15,xmm9 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm15,xmm4 > + paddd xmm11,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm15,xmm5 > + paddd xmm15,xmm7 > + movdqa xmm5,XMMWORD[((160-128))+rax] > + paddd xmm6,XMMWORD[((32-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((112-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm11 > + > + movdqa xmm2,xmm11 > + > + psrld xmm7,6 > + movdqa xmm1,xmm11 > + pslld xmm2,7 > + movdqa XMMWORD[(144-128)+rax],xmm6 > + paddd xmm6,xmm14 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[((-96))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm11 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm11 > + pslld xmm2,26-21 > + pandn xmm0,xmm13 > + pand xmm4,xmm12 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm15 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm15 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm8 > + movdqa xmm7,xmm15 > + pslld xmm2,10 > + pxor xmm4,xmm15 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm14,xmm8 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm14,xmm3 > + paddd xmm10,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm14,xmm6 > + paddd xmm14,xmm7 > + movdqa xmm6,XMMWORD[((176-128))+rax] > + paddd xmm5,XMMWORD[((48-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((128-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm10 > + > + movdqa xmm2,xmm10 > + > + psrld xmm7,6 > + movdqa xmm1,xmm10 > + pslld xmm2,7 > + movdqa XMMWORD[(160-128)+rax],xmm5 > + paddd xmm5,xmm13 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[((-64))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm10 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm10 > + pslld xmm2,26-21 > + pandn xmm0,xmm12 > + pand xmm3,xmm11 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm14 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm14 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm15 > + movdqa xmm7,xmm14 > + pslld xmm2,10 > + pxor xmm3,xmm14 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm13,xmm15 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm13,xmm4 > + paddd xmm9,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm13,xmm5 > + paddd xmm13,xmm7 > + movdqa xmm5,XMMWORD[((192-128))+rax] > + paddd xmm6,XMMWORD[((64-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((144-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm9 > + > + movdqa xmm2,xmm9 > + > + psrld xmm7,6 > + movdqa xmm1,xmm9 > + pslld xmm2,7 > + movdqa XMMWORD[(176-128)+rax],xmm6 > + paddd xmm6,xmm12 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[((-32))+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm9 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm9 > + pslld xmm2,26-21 > + pandn xmm0,xmm11 > + pand xmm4,xmm10 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm13 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm13 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm14 > + movdqa xmm7,xmm13 > + pslld xmm2,10 > + pxor xmm4,xmm13 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm12,xmm14 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm12,xmm3 > + paddd xmm8,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm12,xmm6 > + paddd xmm12,xmm7 > + movdqa xmm6,XMMWORD[((208-128))+rax] > + paddd xmm5,XMMWORD[((80-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((160-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm8 > + > + movdqa xmm2,xmm8 > + > + psrld xmm7,6 > + movdqa xmm1,xmm8 > + pslld xmm2,7 > + movdqa XMMWORD[(192-128)+rax],xmm5 > + paddd xmm5,xmm11 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm8 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm8 > + pslld xmm2,26-21 > + pandn xmm0,xmm10 > + pand xmm3,xmm9 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm12 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm12 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm13 > + movdqa xmm7,xmm12 > + pslld xmm2,10 > + pxor xmm3,xmm12 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm11,xmm13 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm11,xmm4 > + paddd xmm15,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm11,xmm5 > + paddd xmm11,xmm7 > + movdqa xmm5,XMMWORD[((224-128))+rax] > + paddd xmm6,XMMWORD[((96-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((176-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm15 > + > + movdqa xmm2,xmm15 > + > + psrld xmm7,6 > + movdqa xmm1,xmm15 > + pslld xmm2,7 > + movdqa XMMWORD[(208-128)+rax],xmm6 > + paddd xmm6,xmm10 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[32+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm15 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm15 > + pslld xmm2,26-21 > + pandn xmm0,xmm9 > + pand xmm4,xmm8 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm11 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm11 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm12 > + movdqa xmm7,xmm11 > + pslld xmm2,10 > + pxor xmm4,xmm11 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm10,xmm12 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm10,xmm3 > + paddd xmm14,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm10,xmm6 > + paddd xmm10,xmm7 > + movdqa xmm6,XMMWORD[((240-128))+rax] > + paddd xmm5,XMMWORD[((112-128))+rax] > + > + movdqa xmm7,xmm6 > + movdqa xmm1,xmm6 > + psrld xmm7,3 > + movdqa xmm2,xmm6 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((192-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm3,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm3 > + > + psrld xmm3,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + psrld xmm3,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm3 > + pxor xmm0,xmm1 > + paddd xmm5,xmm0 > + movdqa xmm7,xmm14 > + > + movdqa xmm2,xmm14 > + > + psrld xmm7,6 > + movdqa xmm1,xmm14 > + pslld xmm2,7 > + movdqa XMMWORD[(224-128)+rax],xmm5 > + paddd xmm5,xmm9 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm5,XMMWORD[64+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm14 > + > + pxor xmm7,xmm2 > + movdqa xmm3,xmm14 > + pslld xmm2,26-21 > + pandn xmm0,xmm8 > + pand xmm3,xmm15 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm10 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm10 > + psrld xmm1,2 > + paddd xmm5,xmm7 > + pxor xmm0,xmm3 > + movdqa xmm3,xmm11 > + movdqa xmm7,xmm10 > + pslld xmm2,10 > + pxor xmm3,xmm10 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm5,xmm0 > + pslld xmm2,19-10 > + pand xmm4,xmm3 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm9,xmm11 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm9,xmm4 > + paddd xmm13,xmm5 > + pxor xmm7,xmm2 > + > + paddd xmm9,xmm5 > + paddd xmm9,xmm7 > + movdqa xmm5,XMMWORD[((0-128))+rax] > + paddd xmm6,XMMWORD[((128-128))+rax] > + > + movdqa xmm7,xmm5 > + movdqa xmm1,xmm5 > + psrld xmm7,3 > + movdqa xmm2,xmm5 > + > + psrld xmm1,7 > + movdqa xmm0,XMMWORD[((208-128))+rax] > + pslld xmm2,14 > + pxor xmm7,xmm1 > + psrld xmm1,18-7 > + movdqa xmm4,xmm0 > + pxor xmm7,xmm2 > + pslld xmm2,25-14 > + pxor xmm7,xmm1 > + psrld xmm0,10 > + movdqa xmm1,xmm4 > + > + psrld xmm4,17 > + pxor xmm7,xmm2 > + pslld xmm1,13 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + psrld xmm4,19-17 > + pxor xmm0,xmm1 > + pslld xmm1,15-13 > + pxor xmm0,xmm4 > + pxor xmm0,xmm1 > + paddd xmm6,xmm0 > + movdqa xmm7,xmm13 > + > + movdqa xmm2,xmm13 > + > + psrld xmm7,6 > + movdqa xmm1,xmm13 > + pslld xmm2,7 > + movdqa XMMWORD[(240-128)+rax],xmm6 > + paddd xmm6,xmm8 > + > + psrld xmm1,11 > + pxor xmm7,xmm2 > + pslld xmm2,21-7 > + paddd xmm6,XMMWORD[96+rbp] > + pxor xmm7,xmm1 > + > + psrld xmm1,25-11 > + movdqa xmm0,xmm13 > + > + pxor xmm7,xmm2 > + movdqa xmm4,xmm13 > + pslld xmm2,26-21 > + pandn xmm0,xmm15 > + pand xmm4,xmm14 > + pxor xmm7,xmm1 > + > + > + movdqa xmm1,xmm9 > + pxor xmm7,xmm2 > + movdqa xmm2,xmm9 > + psrld xmm1,2 > + paddd xmm6,xmm7 > + pxor xmm0,xmm4 > + movdqa xmm4,xmm10 > + movdqa xmm7,xmm9 > + pslld xmm2,10 > + pxor xmm4,xmm9 > + > + > + psrld xmm7,13 > + pxor xmm1,xmm2 > + paddd xmm6,xmm0 > + pslld xmm2,19-10 > + pand xmm3,xmm4 > + pxor xmm1,xmm7 > + > + > + psrld xmm7,22-13 > + pxor xmm1,xmm2 > + movdqa xmm8,xmm10 > + pslld xmm2,30-19 > + pxor xmm7,xmm1 > + pxor xmm8,xmm3 > + paddd xmm12,xmm6 > + pxor xmm7,xmm2 > + > + paddd xmm8,xmm6 > + paddd xmm8,xmm7 > + lea rbp,[256+rbp] > + dec ecx > + jnz NEAR $L$oop_16_xx > + > + mov ecx,1 > + lea rbp,[((K256+128))] > + > + movdqa xmm7,XMMWORD[rbx] > + cmp ecx,DWORD[rbx] > + pxor xmm0,xmm0 > + cmovge r8,rbp > + cmp ecx,DWORD[4+rbx] > + movdqa xmm6,xmm7 > + cmovge r9,rbp > + cmp ecx,DWORD[8+rbx] > + pcmpgtd xmm6,xmm0 > + cmovge r10,rbp > + cmp ecx,DWORD[12+rbx] > + paddd xmm7,xmm6 > + cmovge r11,rbp > + > + movdqu xmm0,XMMWORD[((0-128))+rdi] > + pand xmm8,xmm6 > + movdqu xmm1,XMMWORD[((32-128))+rdi] > + pand xmm9,xmm6 > + movdqu xmm2,XMMWORD[((64-128))+rdi] > + pand xmm10,xmm6 > + movdqu xmm5,XMMWORD[((96-128))+rdi] > + pand xmm11,xmm6 > + paddd xmm8,xmm0 > + movdqu xmm0,XMMWORD[((128-128))+rdi] > + pand xmm12,xmm6 > + paddd xmm9,xmm1 > + movdqu xmm1,XMMWORD[((160-128))+rdi] > + pand xmm13,xmm6 > + paddd xmm10,xmm2 > + movdqu xmm2,XMMWORD[((192-128))+rdi] > + pand xmm14,xmm6 > + paddd xmm11,xmm5 > + movdqu xmm5,XMMWORD[((224-128))+rdi] > + pand xmm15,xmm6 > + paddd xmm12,xmm0 > + paddd xmm13,xmm1 > + movdqu XMMWORD[(0-128)+rdi],xmm8 > + paddd xmm14,xmm2 > + movdqu XMMWORD[(32-128)+rdi],xmm9 > + paddd xmm15,xmm5 > + movdqu XMMWORD[(64-128)+rdi],xmm10 > + movdqu XMMWORD[(96-128)+rdi],xmm11 > + movdqu XMMWORD[(128-128)+rdi],xmm12 > + movdqu XMMWORD[(160-128)+rdi],xmm13 > + movdqu XMMWORD[(192-128)+rdi],xmm14 > + movdqu XMMWORD[(224-128)+rdi],xmm15 > + > + movdqa XMMWORD[rbx],xmm7 > + movdqa xmm6,XMMWORD[$L$pbswap] > + dec edx > + jnz NEAR $L$oop > + > + mov edx,DWORD[280+rsp] > + lea rdi,[16+rdi] > + lea rsi,[64+rsi] > + dec edx > + jnz NEAR $L$oop_grande > + > +$L$done: > + mov rax,QWORD[272+rsp] > + > + movaps xmm6,XMMWORD[((-184))+rax] > + movaps xmm7,XMMWORD[((-168))+rax] > + movaps xmm8,XMMWORD[((-152))+rax] > + movaps xmm9,XMMWORD[((-136))+rax] > + movaps xmm10,XMMWORD[((-120))+rax] > + movaps xmm11,XMMWORD[((-104))+rax] > + movaps xmm12,XMMWORD[((-88))+rax] > + movaps xmm13,XMMWORD[((-72))+rax] > + movaps xmm14,XMMWORD[((-56))+rax] > + movaps xmm15,XMMWORD[((-40))+rax] > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha256_multi_block: > + > +ALIGN 32 > +sha256_multi_block_shaext: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha256_multi_block_shaext: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > +_shaext_shortcut: > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + lea rsp,[((-168))+rsp] > + movaps XMMWORD[rsp],xmm6 > + movaps XMMWORD[16+rsp],xmm7 > + movaps XMMWORD[32+rsp],xmm8 > + movaps XMMWORD[48+rsp],xmm9 > + movaps XMMWORD[(-120)+rax],xmm10 > + movaps XMMWORD[(-104)+rax],xmm11 > + movaps XMMWORD[(-88)+rax],xmm12 > + movaps XMMWORD[(-72)+rax],xmm13 > + movaps XMMWORD[(-56)+rax],xmm14 > + movaps XMMWORD[(-40)+rax],xmm15 > + sub rsp,288 > + shl edx,1 > + and rsp,-256 > + lea rdi,[128+rdi] > + mov QWORD[272+rsp],rax > +$L$body_shaext: > + lea rbx,[256+rsp] > + lea rbp,[((K256_shaext+128))] > + > +$L$oop_grande_shaext: > + mov DWORD[280+rsp],edx > + xor edx,edx > + mov r8,QWORD[rsi] > + mov ecx,DWORD[8+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[rbx],ecx > + cmovle r8,rsp > + mov r9,QWORD[16+rsi] > + mov ecx,DWORD[24+rsi] > + cmp ecx,edx > + cmovg edx,ecx > + test ecx,ecx > + mov DWORD[4+rbx],ecx > + cmovle r9,rsp > + test edx,edx > + jz NEAR $L$done_shaext > + > + movq xmm12,QWORD[((0-128))+rdi] > + movq xmm4,QWORD[((32-128))+rdi] > + movq xmm13,QWORD[((64-128))+rdi] > + movq xmm5,QWORD[((96-128))+rdi] > + movq xmm8,QWORD[((128-128))+rdi] > + movq xmm9,QWORD[((160-128))+rdi] > + movq xmm10,QWORD[((192-128))+rdi] > + movq xmm11,QWORD[((224-128))+rdi] > + > + punpckldq xmm12,xmm4 > + punpckldq xmm13,xmm5 > + punpckldq xmm8,xmm9 > + punpckldq xmm10,xmm11 > + movdqa xmm3,XMMWORD[((K256_shaext-16))] > + > + movdqa xmm14,xmm12 > + movdqa xmm15,xmm13 > + punpcklqdq xmm12,xmm8 > + punpcklqdq xmm13,xmm10 > + punpckhqdq xmm14,xmm8 > + punpckhqdq xmm15,xmm10 > + > + pshufd xmm12,xmm12,27 > + pshufd xmm13,xmm13,27 > + pshufd xmm14,xmm14,27 > + pshufd xmm15,xmm15,27 > + jmp NEAR $L$oop_shaext > + > +ALIGN 32 > +$L$oop_shaext: > + movdqu xmm4,XMMWORD[r8] > + movdqu xmm8,XMMWORD[r9] > + movdqu xmm5,XMMWORD[16+r8] > + movdqu xmm9,XMMWORD[16+r9] > + movdqu xmm6,XMMWORD[32+r8] > +DB 102,15,56,0,227 > + movdqu xmm10,XMMWORD[32+r9] > +DB 102,68,15,56,0,195 > + movdqu xmm7,XMMWORD[48+r8] > + lea r8,[64+r8] > + movdqu xmm11,XMMWORD[48+r9] > + lea r9,[64+r9] > + > + movdqa xmm0,XMMWORD[((0-128))+rbp] > +DB 102,15,56,0,235 > + paddd xmm0,xmm4 > + pxor xmm4,xmm12 > + movdqa xmm1,xmm0 > + movdqa xmm2,XMMWORD[((0-128))+rbp] > +DB 102,68,15,56,0,203 > + paddd xmm2,xmm8 > + movdqa XMMWORD[80+rsp],xmm13 > +DB 69,15,56,203,236 > + pxor xmm8,xmm14 > + movdqa xmm0,xmm2 > + movdqa XMMWORD[112+rsp],xmm15 > +DB 69,15,56,203,254 > + pshufd xmm0,xmm1,0x0e > + pxor xmm4,xmm12 > + movdqa XMMWORD[64+rsp],xmm12 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + pxor xmm8,xmm14 > + movdqa XMMWORD[96+rsp],xmm14 > + movdqa xmm1,XMMWORD[((16-128))+rbp] > + paddd xmm1,xmm5 > +DB 102,15,56,0,243 > +DB 69,15,56,203,247 > + > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((16-128))+rbp] > + paddd xmm2,xmm9 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + prefetcht0 [127+r8] > +DB 102,15,56,0,251 > +DB 102,68,15,56,0,211 > + prefetcht0 [127+r9] > +DB 69,15,56,203,254 > + pshufd xmm0,xmm1,0x0e > +DB 102,68,15,56,0,219 > +DB 15,56,204,229 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((32-128))+rbp] > + paddd xmm1,xmm6 > +DB 69,15,56,203,247 > + > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((32-128))+rbp] > + paddd xmm2,xmm10 > +DB 69,15,56,203,236 > +DB 69,15,56,204,193 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm7 > +DB 69,15,56,203,254 > + pshufd xmm0,xmm1,0x0e > +DB 102,15,58,15,222,4 > + paddd xmm4,xmm3 > + movdqa xmm3,xmm11 > +DB 102,65,15,58,15,218,4 > +DB 15,56,204,238 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((48-128))+rbp] > + paddd xmm1,xmm7 > +DB 69,15,56,203,247 > +DB 69,15,56,204,202 > + > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((48-128))+rbp] > + paddd xmm8,xmm3 > + paddd xmm2,xmm11 > +DB 15,56,205,231 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm4 > +DB 102,15,58,15,223,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,195 > + pshufd xmm0,xmm1,0x0e > + paddd xmm5,xmm3 > + movdqa xmm3,xmm8 > +DB 102,65,15,58,15,219,4 > +DB 15,56,204,247 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((64-128))+rbp] > + paddd xmm1,xmm4 > +DB 69,15,56,203,247 > +DB 69,15,56,204,211 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((64-128))+rbp] > + paddd xmm9,xmm3 > + paddd xmm2,xmm8 > +DB 15,56,205,236 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm5 > +DB 102,15,58,15,220,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,200 > + pshufd xmm0,xmm1,0x0e > + paddd xmm6,xmm3 > + movdqa xmm3,xmm9 > +DB 102,65,15,58,15,216,4 > +DB 15,56,204,252 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((80-128))+rbp] > + paddd xmm1,xmm5 > +DB 69,15,56,203,247 > +DB 69,15,56,204,216 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((80-128))+rbp] > + paddd xmm10,xmm3 > + paddd xmm2,xmm9 > +DB 15,56,205,245 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm6 > +DB 102,15,58,15,221,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,209 > + pshufd xmm0,xmm1,0x0e > + paddd xmm7,xmm3 > + movdqa xmm3,xmm10 > +DB 102,65,15,58,15,217,4 > +DB 15,56,204,229 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((96-128))+rbp] > + paddd xmm1,xmm6 > +DB 69,15,56,203,247 > +DB 69,15,56,204,193 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((96-128))+rbp] > + paddd xmm11,xmm3 > + paddd xmm2,xmm10 > +DB 15,56,205,254 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm7 > +DB 102,15,58,15,222,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,218 > + pshufd xmm0,xmm1,0x0e > + paddd xmm4,xmm3 > + movdqa xmm3,xmm11 > +DB 102,65,15,58,15,218,4 > +DB 15,56,204,238 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((112-128))+rbp] > + paddd xmm1,xmm7 > +DB 69,15,56,203,247 > +DB 69,15,56,204,202 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((112-128))+rbp] > + paddd xmm8,xmm3 > + paddd xmm2,xmm11 > +DB 15,56,205,231 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm4 > +DB 102,15,58,15,223,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,195 > + pshufd xmm0,xmm1,0x0e > + paddd xmm5,xmm3 > + movdqa xmm3,xmm8 > +DB 102,65,15,58,15,219,4 > +DB 15,56,204,247 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((128-128))+rbp] > + paddd xmm1,xmm4 > +DB 69,15,56,203,247 > +DB 69,15,56,204,211 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((128-128))+rbp] > + paddd xmm9,xmm3 > + paddd xmm2,xmm8 > +DB 15,56,205,236 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm5 > +DB 102,15,58,15,220,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,200 > + pshufd xmm0,xmm1,0x0e > + paddd xmm6,xmm3 > + movdqa xmm3,xmm9 > +DB 102,65,15,58,15,216,4 > +DB 15,56,204,252 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((144-128))+rbp] > + paddd xmm1,xmm5 > +DB 69,15,56,203,247 > +DB 69,15,56,204,216 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((144-128))+rbp] > + paddd xmm10,xmm3 > + paddd xmm2,xmm9 > +DB 15,56,205,245 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm6 > +DB 102,15,58,15,221,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,209 > + pshufd xmm0,xmm1,0x0e > + paddd xmm7,xmm3 > + movdqa xmm3,xmm10 > +DB 102,65,15,58,15,217,4 > +DB 15,56,204,229 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((160-128))+rbp] > + paddd xmm1,xmm6 > +DB 69,15,56,203,247 > +DB 69,15,56,204,193 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((160-128))+rbp] > + paddd xmm11,xmm3 > + paddd xmm2,xmm10 > +DB 15,56,205,254 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm7 > +DB 102,15,58,15,222,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,218 > + pshufd xmm0,xmm1,0x0e > + paddd xmm4,xmm3 > + movdqa xmm3,xmm11 > +DB 102,65,15,58,15,218,4 > +DB 15,56,204,238 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((176-128))+rbp] > + paddd xmm1,xmm7 > +DB 69,15,56,203,247 > +DB 69,15,56,204,202 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((176-128))+rbp] > + paddd xmm8,xmm3 > + paddd xmm2,xmm11 > +DB 15,56,205,231 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm4 > +DB 102,15,58,15,223,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,195 > + pshufd xmm0,xmm1,0x0e > + paddd xmm5,xmm3 > + movdqa xmm3,xmm8 > +DB 102,65,15,58,15,219,4 > +DB 15,56,204,247 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((192-128))+rbp] > + paddd xmm1,xmm4 > +DB 69,15,56,203,247 > +DB 69,15,56,204,211 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((192-128))+rbp] > + paddd xmm9,xmm3 > + paddd xmm2,xmm8 > +DB 15,56,205,236 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm5 > +DB 102,15,58,15,220,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,200 > + pshufd xmm0,xmm1,0x0e > + paddd xmm6,xmm3 > + movdqa xmm3,xmm9 > +DB 102,65,15,58,15,216,4 > +DB 15,56,204,252 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((208-128))+rbp] > + paddd xmm1,xmm5 > +DB 69,15,56,203,247 > +DB 69,15,56,204,216 > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((208-128))+rbp] > + paddd xmm10,xmm3 > + paddd xmm2,xmm9 > +DB 15,56,205,245 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + movdqa xmm3,xmm6 > +DB 102,15,58,15,221,4 > +DB 69,15,56,203,254 > +DB 69,15,56,205,209 > + pshufd xmm0,xmm1,0x0e > + paddd xmm7,xmm3 > + movdqa xmm3,xmm10 > +DB 102,65,15,58,15,217,4 > + nop > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm1,XMMWORD[((224-128))+rbp] > + paddd xmm1,xmm6 > +DB 69,15,56,203,247 > + > + movdqa xmm0,xmm1 > + movdqa xmm2,XMMWORD[((224-128))+rbp] > + paddd xmm11,xmm3 > + paddd xmm2,xmm10 > +DB 15,56,205,254 > + nop > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + mov ecx,1 > + pxor xmm6,xmm6 > +DB 69,15,56,203,254 > +DB 69,15,56,205,218 > + pshufd xmm0,xmm1,0x0e > + movdqa xmm1,XMMWORD[((240-128))+rbp] > + paddd xmm1,xmm7 > + movq xmm7,QWORD[rbx] > + nop > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + movdqa xmm2,XMMWORD[((240-128))+rbp] > + paddd xmm2,xmm11 > +DB 69,15,56,203,247 > + > + movdqa xmm0,xmm1 > + cmp ecx,DWORD[rbx] > + cmovge r8,rsp > + cmp ecx,DWORD[4+rbx] > + cmovge r9,rsp > + pshufd xmm9,xmm7,0x00 > +DB 69,15,56,203,236 > + movdqa xmm0,xmm2 > + pshufd xmm10,xmm7,0x55 > + movdqa xmm11,xmm7 > +DB 69,15,56,203,254 > + pshufd xmm0,xmm1,0x0e > + pcmpgtd xmm9,xmm6 > + pcmpgtd xmm10,xmm6 > +DB 69,15,56,203,229 > + pshufd xmm0,xmm2,0x0e > + pcmpgtd xmm11,xmm6 > + movdqa xmm3,XMMWORD[((K256_shaext-16))] > +DB 69,15,56,203,247 > + > + pand xmm13,xmm9 > + pand xmm15,xmm10 > + pand xmm12,xmm9 > + pand xmm14,xmm10 > + paddd xmm11,xmm7 > + > + paddd xmm13,XMMWORD[80+rsp] > + paddd xmm15,XMMWORD[112+rsp] > + paddd xmm12,XMMWORD[64+rsp] > + paddd xmm14,XMMWORD[96+rsp] > + > + movq QWORD[rbx],xmm11 > + dec edx > + jnz NEAR $L$oop_shaext > + > + mov edx,DWORD[280+rsp] > + > + pshufd xmm12,xmm12,27 > + pshufd xmm13,xmm13,27 > + pshufd xmm14,xmm14,27 > + pshufd xmm15,xmm15,27 > + > + movdqa xmm5,xmm12 > + movdqa xmm6,xmm13 > + punpckldq xmm12,xmm14 > + punpckhdq xmm5,xmm14 > + punpckldq xmm13,xmm15 > + punpckhdq xmm6,xmm15 > + > + movq QWORD[(0-128)+rdi],xmm12 > + psrldq xmm12,8 > + movq QWORD[(128-128)+rdi],xmm5 > + psrldq xmm5,8 > + movq QWORD[(32-128)+rdi],xmm12 > + movq QWORD[(160-128)+rdi],xmm5 > + > + movq QWORD[(64-128)+rdi],xmm13 > + psrldq xmm13,8 > + movq QWORD[(192-128)+rdi],xmm6 > + psrldq xmm6,8 > + movq QWORD[(96-128)+rdi],xmm13 > + movq QWORD[(224-128)+rdi],xmm6 > + > + lea rdi,[8+rdi] > + lea rsi,[32+rsi] > + dec edx > + jnz NEAR $L$oop_grande_shaext > + > +$L$done_shaext: > + > + movaps xmm6,XMMWORD[((-184))+rax] > + movaps xmm7,XMMWORD[((-168))+rax] > + movaps xmm8,XMMWORD[((-152))+rax] > + movaps xmm9,XMMWORD[((-136))+rax] > + movaps xmm10,XMMWORD[((-120))+rax] > + movaps xmm11,XMMWORD[((-104))+rax] > + movaps xmm12,XMMWORD[((-88))+rax] > + movaps xmm13,XMMWORD[((-72))+rax] > + movaps xmm14,XMMWORD[((-56))+rax] > + movaps xmm15,XMMWORD[((-40))+rax] > + mov rbp,QWORD[((-16))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + > + lea rsp,[rax] > + > +$L$epilogue_shaext: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha256_multi_block_shaext: > +ALIGN 256 > +K256: > + DD 1116352408,1116352408,1116352408,1116352408 > + DD 1116352408,1116352408,1116352408,1116352408 > + DD 1899447441,1899447441,1899447441,1899447441 > + DD 1899447441,1899447441,1899447441,1899447441 > + DD 3049323471,3049323471,3049323471,3049323471 > + DD 3049323471,3049323471,3049323471,3049323471 > + DD 3921009573,3921009573,3921009573,3921009573 > + DD 3921009573,3921009573,3921009573,3921009573 > + DD 961987163,961987163,961987163,961987163 > + DD 961987163,961987163,961987163,961987163 > + DD 1508970993,1508970993,1508970993,1508970993 > + DD 1508970993,1508970993,1508970993,1508970993 > + DD 2453635748,2453635748,2453635748,2453635748 > + DD 2453635748,2453635748,2453635748,2453635748 > + DD 2870763221,2870763221,2870763221,2870763221 > + DD 2870763221,2870763221,2870763221,2870763221 > + DD 3624381080,3624381080,3624381080,3624381080 > + DD 3624381080,3624381080,3624381080,3624381080 > + DD 310598401,310598401,310598401,310598401 > + DD 310598401,310598401,310598401,310598401 > + DD 607225278,607225278,607225278,607225278 > + DD 607225278,607225278,607225278,607225278 > + DD 1426881987,1426881987,1426881987,1426881987 > + DD 1426881987,1426881987,1426881987,1426881987 > + DD 1925078388,1925078388,1925078388,1925078388 > + DD 1925078388,1925078388,1925078388,1925078388 > + DD 2162078206,2162078206,2162078206,2162078206 > + DD 2162078206,2162078206,2162078206,2162078206 > + DD 2614888103,2614888103,2614888103,2614888103 > + DD 2614888103,2614888103,2614888103,2614888103 > + DD 3248222580,3248222580,3248222580,3248222580 > + DD 3248222580,3248222580,3248222580,3248222580 > + DD 3835390401,3835390401,3835390401,3835390401 > + DD 3835390401,3835390401,3835390401,3835390401 > + DD 4022224774,4022224774,4022224774,4022224774 > + DD 4022224774,4022224774,4022224774,4022224774 > + DD 264347078,264347078,264347078,264347078 > + DD 264347078,264347078,264347078,264347078 > + DD 604807628,604807628,604807628,604807628 > + DD 604807628,604807628,604807628,604807628 > + DD 770255983,770255983,770255983,770255983 > + DD 770255983,770255983,770255983,770255983 > + DD 1249150122,1249150122,1249150122,1249150122 > + DD 1249150122,1249150122,1249150122,1249150122 > + DD 1555081692,1555081692,1555081692,1555081692 > + DD 1555081692,1555081692,1555081692,1555081692 > + DD 1996064986,1996064986,1996064986,1996064986 > + DD 1996064986,1996064986,1996064986,1996064986 > + DD 2554220882,2554220882,2554220882,2554220882 > + DD 2554220882,2554220882,2554220882,2554220882 > + DD 2821834349,2821834349,2821834349,2821834349 > + DD 2821834349,2821834349,2821834349,2821834349 > + DD 2952996808,2952996808,2952996808,2952996808 > + DD 2952996808,2952996808,2952996808,2952996808 > + DD 3210313671,3210313671,3210313671,3210313671 > + DD 3210313671,3210313671,3210313671,3210313671 > + DD 3336571891,3336571891,3336571891,3336571891 > + DD 3336571891,3336571891,3336571891,3336571891 > + DD 3584528711,3584528711,3584528711,3584528711 > + DD 3584528711,3584528711,3584528711,3584528711 > + DD 113926993,113926993,113926993,113926993 > + DD 113926993,113926993,113926993,113926993 > + DD 338241895,338241895,338241895,338241895 > + DD 338241895,338241895,338241895,338241895 > + DD 666307205,666307205,666307205,666307205 > + DD 666307205,666307205,666307205,666307205 > + DD 773529912,773529912,773529912,773529912 > + DD 773529912,773529912,773529912,773529912 > + DD 1294757372,1294757372,1294757372,1294757372 > + DD 1294757372,1294757372,1294757372,1294757372 > + DD 1396182291,1396182291,1396182291,1396182291 > + DD 1396182291,1396182291,1396182291,1396182291 > + DD 1695183700,1695183700,1695183700,1695183700 > + DD 1695183700,1695183700,1695183700,1695183700 > + DD 1986661051,1986661051,1986661051,1986661051 > + DD 1986661051,1986661051,1986661051,1986661051 > + DD 2177026350,2177026350,2177026350,2177026350 > + DD 2177026350,2177026350,2177026350,2177026350 > + DD 2456956037,2456956037,2456956037,2456956037 > + DD 2456956037,2456956037,2456956037,2456956037 > + DD 2730485921,2730485921,2730485921,2730485921 > + DD 2730485921,2730485921,2730485921,2730485921 > + DD 2820302411,2820302411,2820302411,2820302411 > + DD 2820302411,2820302411,2820302411,2820302411 > + DD 3259730800,3259730800,3259730800,3259730800 > + DD 3259730800,3259730800,3259730800,3259730800 > + DD 3345764771,3345764771,3345764771,3345764771 > + DD 3345764771,3345764771,3345764771,3345764771 > + DD 3516065817,3516065817,3516065817,3516065817 > + DD 3516065817,3516065817,3516065817,3516065817 > + DD 3600352804,3600352804,3600352804,3600352804 > + DD 3600352804,3600352804,3600352804,3600352804 > + DD 4094571909,4094571909,4094571909,4094571909 > + DD 4094571909,4094571909,4094571909,4094571909 > + DD 275423344,275423344,275423344,275423344 > + DD 275423344,275423344,275423344,275423344 > + DD 430227734,430227734,430227734,430227734 > + DD 430227734,430227734,430227734,430227734 > + DD 506948616,506948616,506948616,506948616 > + DD 506948616,506948616,506948616,506948616 > + DD 659060556,659060556,659060556,659060556 > + DD 659060556,659060556,659060556,659060556 > + DD 883997877,883997877,883997877,883997877 > + DD 883997877,883997877,883997877,883997877 > + DD 958139571,958139571,958139571,958139571 > + DD 958139571,958139571,958139571,958139571 > + DD 1322822218,1322822218,1322822218,1322822218 > + DD 1322822218,1322822218,1322822218,1322822218 > + DD 1537002063,1537002063,1537002063,1537002063 > + DD 1537002063,1537002063,1537002063,1537002063 > + DD 1747873779,1747873779,1747873779,1747873779 > + DD 1747873779,1747873779,1747873779,1747873779 > + DD 1955562222,1955562222,1955562222,1955562222 > + DD 1955562222,1955562222,1955562222,1955562222 > + DD 2024104815,2024104815,2024104815,2024104815 > + DD 2024104815,2024104815,2024104815,2024104815 > + DD 2227730452,2227730452,2227730452,2227730452 > + DD 2227730452,2227730452,2227730452,2227730452 > + DD 2361852424,2361852424,2361852424,2361852424 > + DD 2361852424,2361852424,2361852424,2361852424 > + DD 2428436474,2428436474,2428436474,2428436474 > + DD 2428436474,2428436474,2428436474,2428436474 > + DD 2756734187,2756734187,2756734187,2756734187 > + DD 2756734187,2756734187,2756734187,2756734187 > + DD 3204031479,3204031479,3204031479,3204031479 > + DD 3204031479,3204031479,3204031479,3204031479 > + DD 3329325298,3329325298,3329325298,3329325298 > + DD 3329325298,3329325298,3329325298,3329325298 > +$L$pbswap: > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +K256_shaext: > + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > +DB 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111 > +DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114 > +DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71 > +DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112 > +DB 101,110,115,115,108,46,111,114,103,62,0 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + mov rax,QWORD[272+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + > + lea rsi,[((-24-160))+rax] > + lea rdi,[512+r8] > + mov ecx,20 > + DD 0xa548f3fc > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_sha256_multi_block wrt ..imagebase > + DD $L$SEH_end_sha256_multi_block wrt ..imagebase > + DD $L$SEH_info_sha256_multi_block wrt ..imagebase > + DD $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase > + DD $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase > + DD $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_sha256_multi_block: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase > +$L$SEH_info_sha256_multi_block_shaext: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.na= sm > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm > new file mode 100644 > index 0000000000..70e49862a3 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm > @@ -0,0 +1,3313 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl > +; > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > +global sha256_block_data_order > + > +ALIGN 16 > +sha256_block_data_order: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha256_block_data_order: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + lea r11,[OPENSSL_ia32cap_P] > + mov r9d,DWORD[r11] > + mov r10d,DWORD[4+r11] > + mov r11d,DWORD[8+r11] > + test r11d,536870912 > + jnz NEAR _shaext_shortcut > + test r10d,512 > + jnz NEAR $L$ssse3_shortcut > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + shl rdx,4 > + sub rsp,16*4+4*8 > + lea rdx,[rdx*4+rsi] > + and rsp,-64 > + mov QWORD[((64+0))+rsp],rdi > + mov QWORD[((64+8))+rsp],rsi > + mov QWORD[((64+16))+rsp],rdx > + mov QWORD[88+rsp],rax > + > +$L$prologue: > + > + mov eax,DWORD[rdi] > + mov ebx,DWORD[4+rdi] > + mov ecx,DWORD[8+rdi] > + mov edx,DWORD[12+rdi] > + mov r8d,DWORD[16+rdi] > + mov r9d,DWORD[20+rdi] > + mov r10d,DWORD[24+rdi] > + mov r11d,DWORD[28+rdi] > + jmp NEAR $L$loop > + > +ALIGN 16 > +$L$loop: > + mov edi,ebx > + lea rbp,[K256] > + xor edi,ecx > + mov r12d,DWORD[rsi] > + mov r13d,r8d > + mov r14d,eax > + bswap r12d > + ror r13d,14 > + mov r15d,r9d > + > + xor r13d,r8d > + ror r14d,9 > + xor r15d,r10d > + > + mov DWORD[rsp],r12d > + xor r14d,eax > + and r15d,r8d > + > + ror r13d,5 > + add r12d,r11d > + xor r15d,r10d > + > + ror r14d,11 > + xor r13d,r8d > + add r12d,r15d > + > + mov r15d,eax > + add r12d,DWORD[rbp] > + xor r14d,eax > + > + xor r15d,ebx > + ror r13d,6 > + mov r11d,ebx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r11d,edi > + add edx,r12d > + add r11d,r12d > + > + lea rbp,[4+rbp] > + add r11d,r14d > + mov r12d,DWORD[4+rsi] > + mov r13d,edx > + mov r14d,r11d > + bswap r12d > + ror r13d,14 > + mov edi,r8d > + > + xor r13d,edx > + ror r14d,9 > + xor edi,r9d > + > + mov DWORD[4+rsp],r12d > + xor r14d,r11d > + and edi,edx > + > + ror r13d,5 > + add r12d,r10d > + xor edi,r9d > + > + ror r14d,11 > + xor r13d,edx > + add r12d,edi > + > + mov edi,r11d > + add r12d,DWORD[rbp] > + xor r14d,r11d > + > + xor edi,eax > + ror r13d,6 > + mov r10d,eax > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r10d,r15d > + add ecx,r12d > + add r10d,r12d > + > + lea rbp,[4+rbp] > + add r10d,r14d > + mov r12d,DWORD[8+rsi] > + mov r13d,ecx > + mov r14d,r10d > + bswap r12d > + ror r13d,14 > + mov r15d,edx > + > + xor r13d,ecx > + ror r14d,9 > + xor r15d,r8d > + > + mov DWORD[8+rsp],r12d > + xor r14d,r10d > + and r15d,ecx > + > + ror r13d,5 > + add r12d,r9d > + xor r15d,r8d > + > + ror r14d,11 > + xor r13d,ecx > + add r12d,r15d > + > + mov r15d,r10d > + add r12d,DWORD[rbp] > + xor r14d,r10d > + > + xor r15d,r11d > + ror r13d,6 > + mov r9d,r11d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r9d,edi > + add ebx,r12d > + add r9d,r12d > + > + lea rbp,[4+rbp] > + add r9d,r14d > + mov r12d,DWORD[12+rsi] > + mov r13d,ebx > + mov r14d,r9d > + bswap r12d > + ror r13d,14 > + mov edi,ecx > + > + xor r13d,ebx > + ror r14d,9 > + xor edi,edx > + > + mov DWORD[12+rsp],r12d > + xor r14d,r9d > + and edi,ebx > + > + ror r13d,5 > + add r12d,r8d > + xor edi,edx > + > + ror r14d,11 > + xor r13d,ebx > + add r12d,edi > + > + mov edi,r9d > + add r12d,DWORD[rbp] > + xor r14d,r9d > + > + xor edi,r10d > + ror r13d,6 > + mov r8d,r10d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r8d,r15d > + add eax,r12d > + add r8d,r12d > + > + lea rbp,[20+rbp] > + add r8d,r14d > + mov r12d,DWORD[16+rsi] > + mov r13d,eax > + mov r14d,r8d > + bswap r12d > + ror r13d,14 > + mov r15d,ebx > + > + xor r13d,eax > + ror r14d,9 > + xor r15d,ecx > + > + mov DWORD[16+rsp],r12d > + xor r14d,r8d > + and r15d,eax > + > + ror r13d,5 > + add r12d,edx > + xor r15d,ecx > + > + ror r14d,11 > + xor r13d,eax > + add r12d,r15d > + > + mov r15d,r8d > + add r12d,DWORD[rbp] > + xor r14d,r8d > + > + xor r15d,r9d > + ror r13d,6 > + mov edx,r9d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor edx,edi > + add r11d,r12d > + add edx,r12d > + > + lea rbp,[4+rbp] > + add edx,r14d > + mov r12d,DWORD[20+rsi] > + mov r13d,r11d > + mov r14d,edx > + bswap r12d > + ror r13d,14 > + mov edi,eax > + > + xor r13d,r11d > + ror r14d,9 > + xor edi,ebx > + > + mov DWORD[20+rsp],r12d > + xor r14d,edx > + and edi,r11d > + > + ror r13d,5 > + add r12d,ecx > + xor edi,ebx > + > + ror r14d,11 > + xor r13d,r11d > + add r12d,edi > + > + mov edi,edx > + add r12d,DWORD[rbp] > + xor r14d,edx > + > + xor edi,r8d > + ror r13d,6 > + mov ecx,r8d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor ecx,r15d > + add r10d,r12d > + add ecx,r12d > + > + lea rbp,[4+rbp] > + add ecx,r14d > + mov r12d,DWORD[24+rsi] > + mov r13d,r10d > + mov r14d,ecx > + bswap r12d > + ror r13d,14 > + mov r15d,r11d > + > + xor r13d,r10d > + ror r14d,9 > + xor r15d,eax > + > + mov DWORD[24+rsp],r12d > + xor r14d,ecx > + and r15d,r10d > + > + ror r13d,5 > + add r12d,ebx > + xor r15d,eax > + > + ror r14d,11 > + xor r13d,r10d > + add r12d,r15d > + > + mov r15d,ecx > + add r12d,DWORD[rbp] > + xor r14d,ecx > + > + xor r15d,edx > + ror r13d,6 > + mov ebx,edx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor ebx,edi > + add r9d,r12d > + add ebx,r12d > + > + lea rbp,[4+rbp] > + add ebx,r14d > + mov r12d,DWORD[28+rsi] > + mov r13d,r9d > + mov r14d,ebx > + bswap r12d > + ror r13d,14 > + mov edi,r10d > + > + xor r13d,r9d > + ror r14d,9 > + xor edi,r11d > + > + mov DWORD[28+rsp],r12d > + xor r14d,ebx > + and edi,r9d > + > + ror r13d,5 > + add r12d,eax > + xor edi,r11d > + > + ror r14d,11 > + xor r13d,r9d > + add r12d,edi > + > + mov edi,ebx > + add r12d,DWORD[rbp] > + xor r14d,ebx > + > + xor edi,ecx > + ror r13d,6 > + mov eax,ecx > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor eax,r15d > + add r8d,r12d > + add eax,r12d > + > + lea rbp,[20+rbp] > + add eax,r14d > + mov r12d,DWORD[32+rsi] > + mov r13d,r8d > + mov r14d,eax > + bswap r12d > + ror r13d,14 > + mov r15d,r9d > + > + xor r13d,r8d > + ror r14d,9 > + xor r15d,r10d > + > + mov DWORD[32+rsp],r12d > + xor r14d,eax > + and r15d,r8d > + > + ror r13d,5 > + add r12d,r11d > + xor r15d,r10d > + > + ror r14d,11 > + xor r13d,r8d > + add r12d,r15d > + > + mov r15d,eax > + add r12d,DWORD[rbp] > + xor r14d,eax > + > + xor r15d,ebx > + ror r13d,6 > + mov r11d,ebx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r11d,edi > + add edx,r12d > + add r11d,r12d > + > + lea rbp,[4+rbp] > + add r11d,r14d > + mov r12d,DWORD[36+rsi] > + mov r13d,edx > + mov r14d,r11d > + bswap r12d > + ror r13d,14 > + mov edi,r8d > + > + xor r13d,edx > + ror r14d,9 > + xor edi,r9d > + > + mov DWORD[36+rsp],r12d > + xor r14d,r11d > + and edi,edx > + > + ror r13d,5 > + add r12d,r10d > + xor edi,r9d > + > + ror r14d,11 > + xor r13d,edx > + add r12d,edi > + > + mov edi,r11d > + add r12d,DWORD[rbp] > + xor r14d,r11d > + > + xor edi,eax > + ror r13d,6 > + mov r10d,eax > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r10d,r15d > + add ecx,r12d > + add r10d,r12d > + > + lea rbp,[4+rbp] > + add r10d,r14d > + mov r12d,DWORD[40+rsi] > + mov r13d,ecx > + mov r14d,r10d > + bswap r12d > + ror r13d,14 > + mov r15d,edx > + > + xor r13d,ecx > + ror r14d,9 > + xor r15d,r8d > + > + mov DWORD[40+rsp],r12d > + xor r14d,r10d > + and r15d,ecx > + > + ror r13d,5 > + add r12d,r9d > + xor r15d,r8d > + > + ror r14d,11 > + xor r13d,ecx > + add r12d,r15d > + > + mov r15d,r10d > + add r12d,DWORD[rbp] > + xor r14d,r10d > + > + xor r15d,r11d > + ror r13d,6 > + mov r9d,r11d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r9d,edi > + add ebx,r12d > + add r9d,r12d > + > + lea rbp,[4+rbp] > + add r9d,r14d > + mov r12d,DWORD[44+rsi] > + mov r13d,ebx > + mov r14d,r9d > + bswap r12d > + ror r13d,14 > + mov edi,ecx > + > + xor r13d,ebx > + ror r14d,9 > + xor edi,edx > + > + mov DWORD[44+rsp],r12d > + xor r14d,r9d > + and edi,ebx > + > + ror r13d,5 > + add r12d,r8d > + xor edi,edx > + > + ror r14d,11 > + xor r13d,ebx > + add r12d,edi > + > + mov edi,r9d > + add r12d,DWORD[rbp] > + xor r14d,r9d > + > + xor edi,r10d > + ror r13d,6 > + mov r8d,r10d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r8d,r15d > + add eax,r12d > + add r8d,r12d > + > + lea rbp,[20+rbp] > + add r8d,r14d > + mov r12d,DWORD[48+rsi] > + mov r13d,eax > + mov r14d,r8d > + bswap r12d > + ror r13d,14 > + mov r15d,ebx > + > + xor r13d,eax > + ror r14d,9 > + xor r15d,ecx > + > + mov DWORD[48+rsp],r12d > + xor r14d,r8d > + and r15d,eax > + > + ror r13d,5 > + add r12d,edx > + xor r15d,ecx > + > + ror r14d,11 > + xor r13d,eax > + add r12d,r15d > + > + mov r15d,r8d > + add r12d,DWORD[rbp] > + xor r14d,r8d > + > + xor r15d,r9d > + ror r13d,6 > + mov edx,r9d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor edx,edi > + add r11d,r12d > + add edx,r12d > + > + lea rbp,[4+rbp] > + add edx,r14d > + mov r12d,DWORD[52+rsi] > + mov r13d,r11d > + mov r14d,edx > + bswap r12d > + ror r13d,14 > + mov edi,eax > + > + xor r13d,r11d > + ror r14d,9 > + xor edi,ebx > + > + mov DWORD[52+rsp],r12d > + xor r14d,edx > + and edi,r11d > + > + ror r13d,5 > + add r12d,ecx > + xor edi,ebx > + > + ror r14d,11 > + xor r13d,r11d > + add r12d,edi > + > + mov edi,edx > + add r12d,DWORD[rbp] > + xor r14d,edx > + > + xor edi,r8d > + ror r13d,6 > + mov ecx,r8d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor ecx,r15d > + add r10d,r12d > + add ecx,r12d > + > + lea rbp,[4+rbp] > + add ecx,r14d > + mov r12d,DWORD[56+rsi] > + mov r13d,r10d > + mov r14d,ecx > + bswap r12d > + ror r13d,14 > + mov r15d,r11d > + > + xor r13d,r10d > + ror r14d,9 > + xor r15d,eax > + > + mov DWORD[56+rsp],r12d > + xor r14d,ecx > + and r15d,r10d > + > + ror r13d,5 > + add r12d,ebx > + xor r15d,eax > + > + ror r14d,11 > + xor r13d,r10d > + add r12d,r15d > + > + mov r15d,ecx > + add r12d,DWORD[rbp] > + xor r14d,ecx > + > + xor r15d,edx > + ror r13d,6 > + mov ebx,edx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor ebx,edi > + add r9d,r12d > + add ebx,r12d > + > + lea rbp,[4+rbp] > + add ebx,r14d > + mov r12d,DWORD[60+rsi] > + mov r13d,r9d > + mov r14d,ebx > + bswap r12d > + ror r13d,14 > + mov edi,r10d > + > + xor r13d,r9d > + ror r14d,9 > + xor edi,r11d > + > + mov DWORD[60+rsp],r12d > + xor r14d,ebx > + and edi,r9d > + > + ror r13d,5 > + add r12d,eax > + xor edi,r11d > + > + ror r14d,11 > + xor r13d,r9d > + add r12d,edi > + > + mov edi,ebx > + add r12d,DWORD[rbp] > + xor r14d,ebx > + > + xor edi,ecx > + ror r13d,6 > + mov eax,ecx > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor eax,r15d > + add r8d,r12d > + add eax,r12d > + > + lea rbp,[20+rbp] > + jmp NEAR $L$rounds_16_xx > +ALIGN 16 > +$L$rounds_16_xx: > + mov r13d,DWORD[4+rsp] > + mov r15d,DWORD[56+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add eax,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[36+rsp] > + > + add r12d,DWORD[rsp] > + mov r13d,r8d > + add r12d,r15d > + mov r14d,eax > + ror r13d,14 > + mov r15d,r9d > + > + xor r13d,r8d > + ror r14d,9 > + xor r15d,r10d > + > + mov DWORD[rsp],r12d > + xor r14d,eax > + and r15d,r8d > + > + ror r13d,5 > + add r12d,r11d > + xor r15d,r10d > + > + ror r14d,11 > + xor r13d,r8d > + add r12d,r15d > + > + mov r15d,eax > + add r12d,DWORD[rbp] > + xor r14d,eax > + > + xor r15d,ebx > + ror r13d,6 > + mov r11d,ebx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r11d,edi > + add edx,r12d > + add r11d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[8+rsp] > + mov edi,DWORD[60+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r11d,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[40+rsp] > + > + add r12d,DWORD[4+rsp] > + mov r13d,edx > + add r12d,edi > + mov r14d,r11d > + ror r13d,14 > + mov edi,r8d > + > + xor r13d,edx > + ror r14d,9 > + xor edi,r9d > + > + mov DWORD[4+rsp],r12d > + xor r14d,r11d > + and edi,edx > + > + ror r13d,5 > + add r12d,r10d > + xor edi,r9d > + > + ror r14d,11 > + xor r13d,edx > + add r12d,edi > + > + mov edi,r11d > + add r12d,DWORD[rbp] > + xor r14d,r11d > + > + xor edi,eax > + ror r13d,6 > + mov r10d,eax > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r10d,r15d > + add ecx,r12d > + add r10d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[12+rsp] > + mov r15d,DWORD[rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r10d,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[44+rsp] > + > + add r12d,DWORD[8+rsp] > + mov r13d,ecx > + add r12d,r15d > + mov r14d,r10d > + ror r13d,14 > + mov r15d,edx > + > + xor r13d,ecx > + ror r14d,9 > + xor r15d,r8d > + > + mov DWORD[8+rsp],r12d > + xor r14d,r10d > + and r15d,ecx > + > + ror r13d,5 > + add r12d,r9d > + xor r15d,r8d > + > + ror r14d,11 > + xor r13d,ecx > + add r12d,r15d > + > + mov r15d,r10d > + add r12d,DWORD[rbp] > + xor r14d,r10d > + > + xor r15d,r11d > + ror r13d,6 > + mov r9d,r11d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r9d,edi > + add ebx,r12d > + add r9d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[16+rsp] > + mov edi,DWORD[4+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r9d,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[48+rsp] > + > + add r12d,DWORD[12+rsp] > + mov r13d,ebx > + add r12d,edi > + mov r14d,r9d > + ror r13d,14 > + mov edi,ecx > + > + xor r13d,ebx > + ror r14d,9 > + xor edi,edx > + > + mov DWORD[12+rsp],r12d > + xor r14d,r9d > + and edi,ebx > + > + ror r13d,5 > + add r12d,r8d > + xor edi,edx > + > + ror r14d,11 > + xor r13d,ebx > + add r12d,edi > + > + mov edi,r9d > + add r12d,DWORD[rbp] > + xor r14d,r9d > + > + xor edi,r10d > + ror r13d,6 > + mov r8d,r10d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r8d,r15d > + add eax,r12d > + add r8d,r12d > + > + lea rbp,[20+rbp] > + mov r13d,DWORD[20+rsp] > + mov r15d,DWORD[8+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r8d,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[52+rsp] > + > + add r12d,DWORD[16+rsp] > + mov r13d,eax > + add r12d,r15d > + mov r14d,r8d > + ror r13d,14 > + mov r15d,ebx > + > + xor r13d,eax > + ror r14d,9 > + xor r15d,ecx > + > + mov DWORD[16+rsp],r12d > + xor r14d,r8d > + and r15d,eax > + > + ror r13d,5 > + add r12d,edx > + xor r15d,ecx > + > + ror r14d,11 > + xor r13d,eax > + add r12d,r15d > + > + mov r15d,r8d > + add r12d,DWORD[rbp] > + xor r14d,r8d > + > + xor r15d,r9d > + ror r13d,6 > + mov edx,r9d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor edx,edi > + add r11d,r12d > + add edx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[24+rsp] > + mov edi,DWORD[12+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add edx,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[56+rsp] > + > + add r12d,DWORD[20+rsp] > + mov r13d,r11d > + add r12d,edi > + mov r14d,edx > + ror r13d,14 > + mov edi,eax > + > + xor r13d,r11d > + ror r14d,9 > + xor edi,ebx > + > + mov DWORD[20+rsp],r12d > + xor r14d,edx > + and edi,r11d > + > + ror r13d,5 > + add r12d,ecx > + xor edi,ebx > + > + ror r14d,11 > + xor r13d,r11d > + add r12d,edi > + > + mov edi,edx > + add r12d,DWORD[rbp] > + xor r14d,edx > + > + xor edi,r8d > + ror r13d,6 > + mov ecx,r8d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor ecx,r15d > + add r10d,r12d > + add ecx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[28+rsp] > + mov r15d,DWORD[16+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add ecx,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[60+rsp] > + > + add r12d,DWORD[24+rsp] > + mov r13d,r10d > + add r12d,r15d > + mov r14d,ecx > + ror r13d,14 > + mov r15d,r11d > + > + xor r13d,r10d > + ror r14d,9 > + xor r15d,eax > + > + mov DWORD[24+rsp],r12d > + xor r14d,ecx > + and r15d,r10d > + > + ror r13d,5 > + add r12d,ebx > + xor r15d,eax > + > + ror r14d,11 > + xor r13d,r10d > + add r12d,r15d > + > + mov r15d,ecx > + add r12d,DWORD[rbp] > + xor r14d,ecx > + > + xor r15d,edx > + ror r13d,6 > + mov ebx,edx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor ebx,edi > + add r9d,r12d > + add ebx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[32+rsp] > + mov edi,DWORD[20+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add ebx,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[rsp] > + > + add r12d,DWORD[28+rsp] > + mov r13d,r9d > + add r12d,edi > + mov r14d,ebx > + ror r13d,14 > + mov edi,r10d > + > + xor r13d,r9d > + ror r14d,9 > + xor edi,r11d > + > + mov DWORD[28+rsp],r12d > + xor r14d,ebx > + and edi,r9d > + > + ror r13d,5 > + add r12d,eax > + xor edi,r11d > + > + ror r14d,11 > + xor r13d,r9d > + add r12d,edi > + > + mov edi,ebx > + add r12d,DWORD[rbp] > + xor r14d,ebx > + > + xor edi,ecx > + ror r13d,6 > + mov eax,ecx > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor eax,r15d > + add r8d,r12d > + add eax,r12d > + > + lea rbp,[20+rbp] > + mov r13d,DWORD[36+rsp] > + mov r15d,DWORD[24+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add eax,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[4+rsp] > + > + add r12d,DWORD[32+rsp] > + mov r13d,r8d > + add r12d,r15d > + mov r14d,eax > + ror r13d,14 > + mov r15d,r9d > + > + xor r13d,r8d > + ror r14d,9 > + xor r15d,r10d > + > + mov DWORD[32+rsp],r12d > + xor r14d,eax > + and r15d,r8d > + > + ror r13d,5 > + add r12d,r11d > + xor r15d,r10d > + > + ror r14d,11 > + xor r13d,r8d > + add r12d,r15d > + > + mov r15d,eax > + add r12d,DWORD[rbp] > + xor r14d,eax > + > + xor r15d,ebx > + ror r13d,6 > + mov r11d,ebx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r11d,edi > + add edx,r12d > + add r11d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[40+rsp] > + mov edi,DWORD[28+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r11d,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[8+rsp] > + > + add r12d,DWORD[36+rsp] > + mov r13d,edx > + add r12d,edi > + mov r14d,r11d > + ror r13d,14 > + mov edi,r8d > + > + xor r13d,edx > + ror r14d,9 > + xor edi,r9d > + > + mov DWORD[36+rsp],r12d > + xor r14d,r11d > + and edi,edx > + > + ror r13d,5 > + add r12d,r10d > + xor edi,r9d > + > + ror r14d,11 > + xor r13d,edx > + add r12d,edi > + > + mov edi,r11d > + add r12d,DWORD[rbp] > + xor r14d,r11d > + > + xor edi,eax > + ror r13d,6 > + mov r10d,eax > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r10d,r15d > + add ecx,r12d > + add r10d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[44+rsp] > + mov r15d,DWORD[32+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r10d,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[12+rsp] > + > + add r12d,DWORD[40+rsp] > + mov r13d,ecx > + add r12d,r15d > + mov r14d,r10d > + ror r13d,14 > + mov r15d,edx > + > + xor r13d,ecx > + ror r14d,9 > + xor r15d,r8d > + > + mov DWORD[40+rsp],r12d > + xor r14d,r10d > + and r15d,ecx > + > + ror r13d,5 > + add r12d,r9d > + xor r15d,r8d > + > + ror r14d,11 > + xor r13d,ecx > + add r12d,r15d > + > + mov r15d,r10d > + add r12d,DWORD[rbp] > + xor r14d,r10d > + > + xor r15d,r11d > + ror r13d,6 > + mov r9d,r11d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor r9d,edi > + add ebx,r12d > + add r9d,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[48+rsp] > + mov edi,DWORD[36+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r9d,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[16+rsp] > + > + add r12d,DWORD[44+rsp] > + mov r13d,ebx > + add r12d,edi > + mov r14d,r9d > + ror r13d,14 > + mov edi,ecx > + > + xor r13d,ebx > + ror r14d,9 > + xor edi,edx > + > + mov DWORD[44+rsp],r12d > + xor r14d,r9d > + and edi,ebx > + > + ror r13d,5 > + add r12d,r8d > + xor edi,edx > + > + ror r14d,11 > + xor r13d,ebx > + add r12d,edi > + > + mov edi,r9d > + add r12d,DWORD[rbp] > + xor r14d,r9d > + > + xor edi,r10d > + ror r13d,6 > + mov r8d,r10d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor r8d,r15d > + add eax,r12d > + add r8d,r12d > + > + lea rbp,[20+rbp] > + mov r13d,DWORD[52+rsp] > + mov r15d,DWORD[40+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add r8d,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[20+rsp] > + > + add r12d,DWORD[48+rsp] > + mov r13d,eax > + add r12d,r15d > + mov r14d,r8d > + ror r13d,14 > + mov r15d,ebx > + > + xor r13d,eax > + ror r14d,9 > + xor r15d,ecx > + > + mov DWORD[48+rsp],r12d > + xor r14d,r8d > + and r15d,eax > + > + ror r13d,5 > + add r12d,edx > + xor r15d,ecx > + > + ror r14d,11 > + xor r13d,eax > + add r12d,r15d > + > + mov r15d,r8d > + add r12d,DWORD[rbp] > + xor r14d,r8d > + > + xor r15d,r9d > + ror r13d,6 > + mov edx,r9d > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor edx,edi > + add r11d,r12d > + add edx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[56+rsp] > + mov edi,DWORD[44+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add edx,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[24+rsp] > + > + add r12d,DWORD[52+rsp] > + mov r13d,r11d > + add r12d,edi > + mov r14d,edx > + ror r13d,14 > + mov edi,eax > + > + xor r13d,r11d > + ror r14d,9 > + xor edi,ebx > + > + mov DWORD[52+rsp],r12d > + xor r14d,edx > + and edi,r11d > + > + ror r13d,5 > + add r12d,ecx > + xor edi,ebx > + > + ror r14d,11 > + xor r13d,r11d > + add r12d,edi > + > + mov edi,edx > + add r12d,DWORD[rbp] > + xor r14d,edx > + > + xor edi,r8d > + ror r13d,6 > + mov ecx,r8d > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor ecx,r15d > + add r10d,r12d > + add ecx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[60+rsp] > + mov r15d,DWORD[48+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add ecx,r14d > + mov r14d,r15d > + ror r15d,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor r15d,r14d > + shr r14d,10 > + > + ror r15d,17 > + xor r12d,r13d > + xor r15d,r14d > + add r12d,DWORD[28+rsp] > + > + add r12d,DWORD[56+rsp] > + mov r13d,r10d > + add r12d,r15d > + mov r14d,ecx > + ror r13d,14 > + mov r15d,r11d > + > + xor r13d,r10d > + ror r14d,9 > + xor r15d,eax > + > + mov DWORD[56+rsp],r12d > + xor r14d,ecx > + and r15d,r10d > + > + ror r13d,5 > + add r12d,ebx > + xor r15d,eax > + > + ror r14d,11 > + xor r13d,r10d > + add r12d,r15d > + > + mov r15d,ecx > + add r12d,DWORD[rbp] > + xor r14d,ecx > + > + xor r15d,edx > + ror r13d,6 > + mov ebx,edx > + > + and edi,r15d > + ror r14d,2 > + add r12d,r13d > + > + xor ebx,edi > + add r9d,r12d > + add ebx,r12d > + > + lea rbp,[4+rbp] > + mov r13d,DWORD[rsp] > + mov edi,DWORD[52+rsp] > + > + mov r12d,r13d > + ror r13d,11 > + add ebx,r14d > + mov r14d,edi > + ror edi,2 > + > + xor r13d,r12d > + shr r12d,3 > + ror r13d,7 > + xor edi,r14d > + shr r14d,10 > + > + ror edi,17 > + xor r12d,r13d > + xor edi,r14d > + add r12d,DWORD[32+rsp] > + > + add r12d,DWORD[60+rsp] > + mov r13d,r9d > + add r12d,edi > + mov r14d,ebx > + ror r13d,14 > + mov edi,r10d > + > + xor r13d,r9d > + ror r14d,9 > + xor edi,r11d > + > + mov DWORD[60+rsp],r12d > + xor r14d,ebx > + and edi,r9d > + > + ror r13d,5 > + add r12d,eax > + xor edi,r11d > + > + ror r14d,11 > + xor r13d,r9d > + add r12d,edi > + > + mov edi,ebx > + add r12d,DWORD[rbp] > + xor r14d,ebx > + > + xor edi,ecx > + ror r13d,6 > + mov eax,ecx > + > + and r15d,edi > + ror r14d,2 > + add r12d,r13d > + > + xor eax,r15d > + add r8d,r12d > + add eax,r12d > + > + lea rbp,[20+rbp] > + cmp BYTE[3+rbp],0 > + jnz NEAR $L$rounds_16_xx > + > + mov rdi,QWORD[((64+0))+rsp] > + add eax,r14d > + lea rsi,[64+rsi] > + > + add eax,DWORD[rdi] > + add ebx,DWORD[4+rdi] > + add ecx,DWORD[8+rdi] > + add edx,DWORD[12+rdi] > + add r8d,DWORD[16+rdi] > + add r9d,DWORD[20+rdi] > + add r10d,DWORD[24+rdi] > + add r11d,DWORD[28+rdi] > + > + cmp rsi,QWORD[((64+16))+rsp] > + > + mov DWORD[rdi],eax > + mov DWORD[4+rdi],ebx > + mov DWORD[8+rdi],ecx > + mov DWORD[12+rdi],edx > + mov DWORD[16+rdi],r8d > + mov DWORD[20+rdi],r9d > + mov DWORD[24+rdi],r10d > + mov DWORD[28+rdi],r11d > + jb NEAR $L$loop > + > + mov rsi,QWORD[88+rsp] > + > + mov r15,QWORD[((-48))+rsi] > + > + mov r14,QWORD[((-40))+rsi] > + > + mov r13,QWORD[((-32))+rsi] > + > + mov r12,QWORD[((-24))+rsi] > + > + mov rbp,QWORD[((-16))+rsi] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha256_block_data_order: > +ALIGN 64 > + > +K256: > + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > + DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff > + DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff > + DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 > + DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 > +DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 > +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 > +DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 > +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 > +DB 111,114,103,62,0 > + > +ALIGN 64 > +sha256_block_data_order_shaext: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha256_block_data_order_shaext: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > +_shaext_shortcut: > + > + lea rsp,[((-88))+rsp] > + movaps XMMWORD[(-8-80)+rax],xmm6 > + movaps XMMWORD[(-8-64)+rax],xmm7 > + movaps XMMWORD[(-8-48)+rax],xmm8 > + movaps XMMWORD[(-8-32)+rax],xmm9 > + movaps XMMWORD[(-8-16)+rax],xmm10 > +$L$prologue_shaext: > + lea rcx,[((K256+128))] > + movdqu xmm1,XMMWORD[rdi] > + movdqu xmm2,XMMWORD[16+rdi] > + movdqa xmm7,XMMWORD[((512-128))+rcx] > + > + pshufd xmm0,xmm1,0x1b > + pshufd xmm1,xmm1,0xb1 > + pshufd xmm2,xmm2,0x1b > + movdqa xmm8,xmm7 > +DB 102,15,58,15,202,8 > + punpcklqdq xmm2,xmm0 > + jmp NEAR $L$oop_shaext > + > +ALIGN 16 > +$L$oop_shaext: > + movdqu xmm3,XMMWORD[rsi] > + movdqu xmm4,XMMWORD[16+rsi] > + movdqu xmm5,XMMWORD[32+rsi] > +DB 102,15,56,0,223 > + movdqu xmm6,XMMWORD[48+rsi] > + > + movdqa xmm0,XMMWORD[((0-128))+rcx] > + paddd xmm0,xmm3 > +DB 102,15,56,0,231 > + movdqa xmm10,xmm2 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + nop > + movdqa xmm9,xmm1 > +DB 15,56,203,202 > + > + movdqa xmm0,XMMWORD[((32-128))+rcx] > + paddd xmm0,xmm4 > +DB 102,15,56,0,239 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + lea rsi,[64+rsi] > +DB 15,56,204,220 > +DB 15,56,203,202 > + > + movdqa xmm0,XMMWORD[((64-128))+rcx] > + paddd xmm0,xmm5 > +DB 102,15,56,0,247 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm6 > +DB 102,15,58,15,253,4 > + nop > + paddd xmm3,xmm7 > +DB 15,56,204,229 > +DB 15,56,203,202 > + > + movdqa xmm0,XMMWORD[((96-128))+rcx] > + paddd xmm0,xmm6 > +DB 15,56,205,222 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm3 > +DB 102,15,58,15,254,4 > + nop > + paddd xmm4,xmm7 > +DB 15,56,204,238 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((128-128))+rcx] > + paddd xmm0,xmm3 > +DB 15,56,205,227 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm4 > +DB 102,15,58,15,251,4 > + nop > + paddd xmm5,xmm7 > +DB 15,56,204,243 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((160-128))+rcx] > + paddd xmm0,xmm4 > +DB 15,56,205,236 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm5 > +DB 102,15,58,15,252,4 > + nop > + paddd xmm6,xmm7 > +DB 15,56,204,220 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((192-128))+rcx] > + paddd xmm0,xmm5 > +DB 15,56,205,245 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm6 > +DB 102,15,58,15,253,4 > + nop > + paddd xmm3,xmm7 > +DB 15,56,204,229 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((224-128))+rcx] > + paddd xmm0,xmm6 > +DB 15,56,205,222 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm3 > +DB 102,15,58,15,254,4 > + nop > + paddd xmm4,xmm7 > +DB 15,56,204,238 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((256-128))+rcx] > + paddd xmm0,xmm3 > +DB 15,56,205,227 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm4 > +DB 102,15,58,15,251,4 > + nop > + paddd xmm5,xmm7 > +DB 15,56,204,243 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((288-128))+rcx] > + paddd xmm0,xmm4 > +DB 15,56,205,236 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm5 > +DB 102,15,58,15,252,4 > + nop > + paddd xmm6,xmm7 > +DB 15,56,204,220 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((320-128))+rcx] > + paddd xmm0,xmm5 > +DB 15,56,205,245 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm6 > +DB 102,15,58,15,253,4 > + nop > + paddd xmm3,xmm7 > +DB 15,56,204,229 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((352-128))+rcx] > + paddd xmm0,xmm6 > +DB 15,56,205,222 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm3 > +DB 102,15,58,15,254,4 > + nop > + paddd xmm4,xmm7 > +DB 15,56,204,238 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((384-128))+rcx] > + paddd xmm0,xmm3 > +DB 15,56,205,227 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm4 > +DB 102,15,58,15,251,4 > + nop > + paddd xmm5,xmm7 > +DB 15,56,204,243 > +DB 15,56,203,202 > + movdqa xmm0,XMMWORD[((416-128))+rcx] > + paddd xmm0,xmm4 > +DB 15,56,205,236 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + movdqa xmm7,xmm5 > +DB 102,15,58,15,252,4 > +DB 15,56,203,202 > + paddd xmm6,xmm7 > + > + movdqa xmm0,XMMWORD[((448-128))+rcx] > + paddd xmm0,xmm5 > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > +DB 15,56,205,245 > + movdqa xmm7,xmm8 > +DB 15,56,203,202 > + > + movdqa xmm0,XMMWORD[((480-128))+rcx] > + paddd xmm0,xmm6 > + nop > +DB 15,56,203,209 > + pshufd xmm0,xmm0,0x0e > + dec rdx > + nop > +DB 15,56,203,202 > + > + paddd xmm2,xmm10 > + paddd xmm1,xmm9 > + jnz NEAR $L$oop_shaext > + > + pshufd xmm2,xmm2,0xb1 > + pshufd xmm7,xmm1,0x1b > + pshufd xmm1,xmm1,0xb1 > + punpckhqdq xmm1,xmm2 > +DB 102,15,58,15,215,8 > + > + movdqu XMMWORD[rdi],xmm1 > + movdqu XMMWORD[16+rdi],xmm2 > + movaps xmm6,XMMWORD[((-8-80))+rax] > + movaps xmm7,XMMWORD[((-8-64))+rax] > + movaps xmm8,XMMWORD[((-8-48))+rax] > + movaps xmm9,XMMWORD[((-8-32))+rax] > + movaps xmm10,XMMWORD[((-8-16))+rax] > + mov rsp,rax > +$L$epilogue_shaext: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha256_block_data_order_shaext: > + > +ALIGN 64 > +sha256_block_data_order_ssse3: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha256_block_data_order_ssse3: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > +$L$ssse3_shortcut: > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + shl rdx,4 > + sub rsp,160 > + lea rdx,[rdx*4+rsi] > + and rsp,-64 > + mov QWORD[((64+0))+rsp],rdi > + mov QWORD[((64+8))+rsp],rsi > + mov QWORD[((64+16))+rsp],rdx > + mov QWORD[88+rsp],rax > + > + movaps XMMWORD[(64+32)+rsp],xmm6 > + movaps XMMWORD[(64+48)+rsp],xmm7 > + movaps XMMWORD[(64+64)+rsp],xmm8 > + movaps XMMWORD[(64+80)+rsp],xmm9 > +$L$prologue_ssse3: > + > + mov eax,DWORD[rdi] > + mov ebx,DWORD[4+rdi] > + mov ecx,DWORD[8+rdi] > + mov edx,DWORD[12+rdi] > + mov r8d,DWORD[16+rdi] > + mov r9d,DWORD[20+rdi] > + mov r10d,DWORD[24+rdi] > + mov r11d,DWORD[28+rdi] > + > + > + jmp NEAR $L$loop_ssse3 > +ALIGN 16 > +$L$loop_ssse3: > + movdqa xmm7,XMMWORD[((K256+512))] > + movdqu xmm0,XMMWORD[rsi] > + movdqu xmm1,XMMWORD[16+rsi] > + movdqu xmm2,XMMWORD[32+rsi] > +DB 102,15,56,0,199 > + movdqu xmm3,XMMWORD[48+rsi] > + lea rbp,[K256] > +DB 102,15,56,0,207 > + movdqa xmm4,XMMWORD[rbp] > + movdqa xmm5,XMMWORD[32+rbp] > +DB 102,15,56,0,215 > + paddd xmm4,xmm0 > + movdqa xmm6,XMMWORD[64+rbp] > +DB 102,15,56,0,223 > + movdqa xmm7,XMMWORD[96+rbp] > + paddd xmm5,xmm1 > + paddd xmm6,xmm2 > + paddd xmm7,xmm3 > + movdqa XMMWORD[rsp],xmm4 > + mov r14d,eax > + movdqa XMMWORD[16+rsp],xmm5 > + mov edi,ebx > + movdqa XMMWORD[32+rsp],xmm6 > + xor edi,ecx > + movdqa XMMWORD[48+rsp],xmm7 > + mov r13d,r8d > + jmp NEAR $L$ssse3_00_47 > + > +ALIGN 16 > +$L$ssse3_00_47: > + sub rbp,-128 > + ror r13d,14 > + movdqa xmm4,xmm1 > + mov eax,r14d > + mov r12d,r9d > + movdqa xmm7,xmm3 > + ror r14d,9 > + xor r13d,r8d > + xor r12d,r10d > + ror r13d,5 > + xor r14d,eax > +DB 102,15,58,15,224,4 > + and r12d,r8d > + xor r13d,r8d > +DB 102,15,58,15,250,4 > + add r11d,DWORD[rsp] > + mov r15d,eax > + xor r12d,r10d > + ror r14d,11 > + movdqa xmm5,xmm4 > + xor r15d,ebx > + add r11d,r12d > + movdqa xmm6,xmm4 > + ror r13d,6 > + and edi,r15d > + psrld xmm4,3 > + xor r14d,eax > + add r11d,r13d > + xor edi,ebx > + paddd xmm0,xmm7 > + ror r14d,2 > + add edx,r11d > + psrld xmm6,7 > + add r11d,edi > + mov r13d,edx > + pshufd xmm7,xmm3,250 > + add r14d,r11d > + ror r13d,14 > + pslld xmm5,14 > + mov r11d,r14d > + mov r12d,r8d > + pxor xmm4,xmm6 > + ror r14d,9 > + xor r13d,edx > + xor r12d,r9d > + ror r13d,5 > + psrld xmm6,11 > + xor r14d,r11d > + pxor xmm4,xmm5 > + and r12d,edx > + xor r13d,edx > + pslld xmm5,11 > + add r10d,DWORD[4+rsp] > + mov edi,r11d > + pxor xmm4,xmm6 > + xor r12d,r9d > + ror r14d,11 > + movdqa xmm6,xmm7 > + xor edi,eax > + add r10d,r12d > + pxor xmm4,xmm5 > + ror r13d,6 > + and r15d,edi > + xor r14d,r11d > + psrld xmm7,10 > + add r10d,r13d > + xor r15d,eax > + paddd xmm0,xmm4 > + ror r14d,2 > + add ecx,r10d > + psrlq xmm6,17 > + add r10d,r15d > + mov r13d,ecx > + add r14d,r10d > + pxor xmm7,xmm6 > + ror r13d,14 > + mov r10d,r14d > + mov r12d,edx > + ror r14d,9 > + psrlq xmm6,2 > + xor r13d,ecx > + xor r12d,r8d > + pxor xmm7,xmm6 > + ror r13d,5 > + xor r14d,r10d > + and r12d,ecx > + pshufd xmm7,xmm7,128 > + xor r13d,ecx > + add r9d,DWORD[8+rsp] > + mov r15d,r10d > + psrldq xmm7,8 > + xor r12d,r8d > + ror r14d,11 > + xor r15d,r11d > + add r9d,r12d > + ror r13d,6 > + paddd xmm0,xmm7 > + and edi,r15d > + xor r14d,r10d > + add r9d,r13d > + pshufd xmm7,xmm0,80 > + xor edi,r11d > + ror r14d,2 > + add ebx,r9d > + movdqa xmm6,xmm7 > + add r9d,edi > + mov r13d,ebx > + psrld xmm7,10 > + add r14d,r9d > + ror r13d,14 > + psrlq xmm6,17 > + mov r9d,r14d > + mov r12d,ecx > + pxor xmm7,xmm6 > + ror r14d,9 > + xor r13d,ebx > + xor r12d,edx > + ror r13d,5 > + xor r14d,r9d > + psrlq xmm6,2 > + and r12d,ebx > + xor r13d,ebx > + add r8d,DWORD[12+rsp] > + pxor xmm7,xmm6 > + mov edi,r9d > + xor r12d,edx > + ror r14d,11 > + pshufd xmm7,xmm7,8 > + xor edi,r10d > + add r8d,r12d > + movdqa xmm6,XMMWORD[rbp] > + ror r13d,6 > + and r15d,edi > + pslldq xmm7,8 > + xor r14d,r9d > + add r8d,r13d > + xor r15d,r10d > + paddd xmm0,xmm7 > + ror r14d,2 > + add eax,r8d > + add r8d,r15d > + paddd xmm6,xmm0 > + mov r13d,eax > + add r14d,r8d > + movdqa XMMWORD[rsp],xmm6 > + ror r13d,14 > + movdqa xmm4,xmm2 > + mov r8d,r14d > + mov r12d,ebx > + movdqa xmm7,xmm0 > + ror r14d,9 > + xor r13d,eax > + xor r12d,ecx > + ror r13d,5 > + xor r14d,r8d > +DB 102,15,58,15,225,4 > + and r12d,eax > + xor r13d,eax > +DB 102,15,58,15,251,4 > + add edx,DWORD[16+rsp] > + mov r15d,r8d > + xor r12d,ecx > + ror r14d,11 > + movdqa xmm5,xmm4 > + xor r15d,r9d > + add edx,r12d > + movdqa xmm6,xmm4 > + ror r13d,6 > + and edi,r15d > + psrld xmm4,3 > + xor r14d,r8d > + add edx,r13d > + xor edi,r9d > + paddd xmm1,xmm7 > + ror r14d,2 > + add r11d,edx > + psrld xmm6,7 > + add edx,edi > + mov r13d,r11d > + pshufd xmm7,xmm0,250 > + add r14d,edx > + ror r13d,14 > + pslld xmm5,14 > + mov edx,r14d > + mov r12d,eax > + pxor xmm4,xmm6 > + ror r14d,9 > + xor r13d,r11d > + xor r12d,ebx > + ror r13d,5 > + psrld xmm6,11 > + xor r14d,edx > + pxor xmm4,xmm5 > + and r12d,r11d > + xor r13d,r11d > + pslld xmm5,11 > + add ecx,DWORD[20+rsp] > + mov edi,edx > + pxor xmm4,xmm6 > + xor r12d,ebx > + ror r14d,11 > + movdqa xmm6,xmm7 > + xor edi,r8d > + add ecx,r12d > + pxor xmm4,xmm5 > + ror r13d,6 > + and r15d,edi > + xor r14d,edx > + psrld xmm7,10 > + add ecx,r13d > + xor r15d,r8d > + paddd xmm1,xmm4 > + ror r14d,2 > + add r10d,ecx > + psrlq xmm6,17 > + add ecx,r15d > + mov r13d,r10d > + add r14d,ecx > + pxor xmm7,xmm6 > + ror r13d,14 > + mov ecx,r14d > + mov r12d,r11d > + ror r14d,9 > + psrlq xmm6,2 > + xor r13d,r10d > + xor r12d,eax > + pxor xmm7,xmm6 > + ror r13d,5 > + xor r14d,ecx > + and r12d,r10d > + pshufd xmm7,xmm7,128 > + xor r13d,r10d > + add ebx,DWORD[24+rsp] > + mov r15d,ecx > + psrldq xmm7,8 > + xor r12d,eax > + ror r14d,11 > + xor r15d,edx > + add ebx,r12d > + ror r13d,6 > + paddd xmm1,xmm7 > + and edi,r15d > + xor r14d,ecx > + add ebx,r13d > + pshufd xmm7,xmm1,80 > + xor edi,edx > + ror r14d,2 > + add r9d,ebx > + movdqa xmm6,xmm7 > + add ebx,edi > + mov r13d,r9d > + psrld xmm7,10 > + add r14d,ebx > + ror r13d,14 > + psrlq xmm6,17 > + mov ebx,r14d > + mov r12d,r10d > + pxor xmm7,xmm6 > + ror r14d,9 > + xor r13d,r9d > + xor r12d,r11d > + ror r13d,5 > + xor r14d,ebx > + psrlq xmm6,2 > + and r12d,r9d > + xor r13d,r9d > + add eax,DWORD[28+rsp] > + pxor xmm7,xmm6 > + mov edi,ebx > + xor r12d,r11d > + ror r14d,11 > + pshufd xmm7,xmm7,8 > + xor edi,ecx > + add eax,r12d > + movdqa xmm6,XMMWORD[32+rbp] > + ror r13d,6 > + and r15d,edi > + pslldq xmm7,8 > + xor r14d,ebx > + add eax,r13d > + xor r15d,ecx > + paddd xmm1,xmm7 > + ror r14d,2 > + add r8d,eax > + add eax,r15d > + paddd xmm6,xmm1 > + mov r13d,r8d > + add r14d,eax > + movdqa XMMWORD[16+rsp],xmm6 > + ror r13d,14 > + movdqa xmm4,xmm3 > + mov eax,r14d > + mov r12d,r9d > + movdqa xmm7,xmm1 > + ror r14d,9 > + xor r13d,r8d > + xor r12d,r10d > + ror r13d,5 > + xor r14d,eax > +DB 102,15,58,15,226,4 > + and r12d,r8d > + xor r13d,r8d > +DB 102,15,58,15,248,4 > + add r11d,DWORD[32+rsp] > + mov r15d,eax > + xor r12d,r10d > + ror r14d,11 > + movdqa xmm5,xmm4 > + xor r15d,ebx > + add r11d,r12d > + movdqa xmm6,xmm4 > + ror r13d,6 > + and edi,r15d > + psrld xmm4,3 > + xor r14d,eax > + add r11d,r13d > + xor edi,ebx > + paddd xmm2,xmm7 > + ror r14d,2 > + add edx,r11d > + psrld xmm6,7 > + add r11d,edi > + mov r13d,edx > + pshufd xmm7,xmm1,250 > + add r14d,r11d > + ror r13d,14 > + pslld xmm5,14 > + mov r11d,r14d > + mov r12d,r8d > + pxor xmm4,xmm6 > + ror r14d,9 > + xor r13d,edx > + xor r12d,r9d > + ror r13d,5 > + psrld xmm6,11 > + xor r14d,r11d > + pxor xmm4,xmm5 > + and r12d,edx > + xor r13d,edx > + pslld xmm5,11 > + add r10d,DWORD[36+rsp] > + mov edi,r11d > + pxor xmm4,xmm6 > + xor r12d,r9d > + ror r14d,11 > + movdqa xmm6,xmm7 > + xor edi,eax > + add r10d,r12d > + pxor xmm4,xmm5 > + ror r13d,6 > + and r15d,edi > + xor r14d,r11d > + psrld xmm7,10 > + add r10d,r13d > + xor r15d,eax > + paddd xmm2,xmm4 > + ror r14d,2 > + add ecx,r10d > + psrlq xmm6,17 > + add r10d,r15d > + mov r13d,ecx > + add r14d,r10d > + pxor xmm7,xmm6 > + ror r13d,14 > + mov r10d,r14d > + mov r12d,edx > + ror r14d,9 > + psrlq xmm6,2 > + xor r13d,ecx > + xor r12d,r8d > + pxor xmm7,xmm6 > + ror r13d,5 > + xor r14d,r10d > + and r12d,ecx > + pshufd xmm7,xmm7,128 > + xor r13d,ecx > + add r9d,DWORD[40+rsp] > + mov r15d,r10d > + psrldq xmm7,8 > + xor r12d,r8d > + ror r14d,11 > + xor r15d,r11d > + add r9d,r12d > + ror r13d,6 > + paddd xmm2,xmm7 > + and edi,r15d > + xor r14d,r10d > + add r9d,r13d > + pshufd xmm7,xmm2,80 > + xor edi,r11d > + ror r14d,2 > + add ebx,r9d > + movdqa xmm6,xmm7 > + add r9d,edi > + mov r13d,ebx > + psrld xmm7,10 > + add r14d,r9d > + ror r13d,14 > + psrlq xmm6,17 > + mov r9d,r14d > + mov r12d,ecx > + pxor xmm7,xmm6 > + ror r14d,9 > + xor r13d,ebx > + xor r12d,edx > + ror r13d,5 > + xor r14d,r9d > + psrlq xmm6,2 > + and r12d,ebx > + xor r13d,ebx > + add r8d,DWORD[44+rsp] > + pxor xmm7,xmm6 > + mov edi,r9d > + xor r12d,edx > + ror r14d,11 > + pshufd xmm7,xmm7,8 > + xor edi,r10d > + add r8d,r12d > + movdqa xmm6,XMMWORD[64+rbp] > + ror r13d,6 > + and r15d,edi > + pslldq xmm7,8 > + xor r14d,r9d > + add r8d,r13d > + xor r15d,r10d > + paddd xmm2,xmm7 > + ror r14d,2 > + add eax,r8d > + add r8d,r15d > + paddd xmm6,xmm2 > + mov r13d,eax > + add r14d,r8d > + movdqa XMMWORD[32+rsp],xmm6 > + ror r13d,14 > + movdqa xmm4,xmm0 > + mov r8d,r14d > + mov r12d,ebx > + movdqa xmm7,xmm2 > + ror r14d,9 > + xor r13d,eax > + xor r12d,ecx > + ror r13d,5 > + xor r14d,r8d > +DB 102,15,58,15,227,4 > + and r12d,eax > + xor r13d,eax > +DB 102,15,58,15,249,4 > + add edx,DWORD[48+rsp] > + mov r15d,r8d > + xor r12d,ecx > + ror r14d,11 > + movdqa xmm5,xmm4 > + xor r15d,r9d > + add edx,r12d > + movdqa xmm6,xmm4 > + ror r13d,6 > + and edi,r15d > + psrld xmm4,3 > + xor r14d,r8d > + add edx,r13d > + xor edi,r9d > + paddd xmm3,xmm7 > + ror r14d,2 > + add r11d,edx > + psrld xmm6,7 > + add edx,edi > + mov r13d,r11d > + pshufd xmm7,xmm2,250 > + add r14d,edx > + ror r13d,14 > + pslld xmm5,14 > + mov edx,r14d > + mov r12d,eax > + pxor xmm4,xmm6 > + ror r14d,9 > + xor r13d,r11d > + xor r12d,ebx > + ror r13d,5 > + psrld xmm6,11 > + xor r14d,edx > + pxor xmm4,xmm5 > + and r12d,r11d > + xor r13d,r11d > + pslld xmm5,11 > + add ecx,DWORD[52+rsp] > + mov edi,edx > + pxor xmm4,xmm6 > + xor r12d,ebx > + ror r14d,11 > + movdqa xmm6,xmm7 > + xor edi,r8d > + add ecx,r12d > + pxor xmm4,xmm5 > + ror r13d,6 > + and r15d,edi > + xor r14d,edx > + psrld xmm7,10 > + add ecx,r13d > + xor r15d,r8d > + paddd xmm3,xmm4 > + ror r14d,2 > + add r10d,ecx > + psrlq xmm6,17 > + add ecx,r15d > + mov r13d,r10d > + add r14d,ecx > + pxor xmm7,xmm6 > + ror r13d,14 > + mov ecx,r14d > + mov r12d,r11d > + ror r14d,9 > + psrlq xmm6,2 > + xor r13d,r10d > + xor r12d,eax > + pxor xmm7,xmm6 > + ror r13d,5 > + xor r14d,ecx > + and r12d,r10d > + pshufd xmm7,xmm7,128 > + xor r13d,r10d > + add ebx,DWORD[56+rsp] > + mov r15d,ecx > + psrldq xmm7,8 > + xor r12d,eax > + ror r14d,11 > + xor r15d,edx > + add ebx,r12d > + ror r13d,6 > + paddd xmm3,xmm7 > + and edi,r15d > + xor r14d,ecx > + add ebx,r13d > + pshufd xmm7,xmm3,80 > + xor edi,edx > + ror r14d,2 > + add r9d,ebx > + movdqa xmm6,xmm7 > + add ebx,edi > + mov r13d,r9d > + psrld xmm7,10 > + add r14d,ebx > + ror r13d,14 > + psrlq xmm6,17 > + mov ebx,r14d > + mov r12d,r10d > + pxor xmm7,xmm6 > + ror r14d,9 > + xor r13d,r9d > + xor r12d,r11d > + ror r13d,5 > + xor r14d,ebx > + psrlq xmm6,2 > + and r12d,r9d > + xor r13d,r9d > + add eax,DWORD[60+rsp] > + pxor xmm7,xmm6 > + mov edi,ebx > + xor r12d,r11d > + ror r14d,11 > + pshufd xmm7,xmm7,8 > + xor edi,ecx > + add eax,r12d > + movdqa xmm6,XMMWORD[96+rbp] > + ror r13d,6 > + and r15d,edi > + pslldq xmm7,8 > + xor r14d,ebx > + add eax,r13d > + xor r15d,ecx > + paddd xmm3,xmm7 > + ror r14d,2 > + add r8d,eax > + add eax,r15d > + paddd xmm6,xmm3 > + mov r13d,r8d > + add r14d,eax > + movdqa XMMWORD[48+rsp],xmm6 > + cmp BYTE[131+rbp],0 > + jne NEAR $L$ssse3_00_47 > + ror r13d,14 > + mov eax,r14d > + mov r12d,r9d > + ror r14d,9 > + xor r13d,r8d > + xor r12d,r10d > + ror r13d,5 > + xor r14d,eax > + and r12d,r8d > + xor r13d,r8d > + add r11d,DWORD[rsp] > + mov r15d,eax > + xor r12d,r10d > + ror r14d,11 > + xor r15d,ebx > + add r11d,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,eax > + add r11d,r13d > + xor edi,ebx > + ror r14d,2 > + add edx,r11d > + add r11d,edi > + mov r13d,edx > + add r14d,r11d > + ror r13d,14 > + mov r11d,r14d > + mov r12d,r8d > + ror r14d,9 > + xor r13d,edx > + xor r12d,r9d > + ror r13d,5 > + xor r14d,r11d > + and r12d,edx > + xor r13d,edx > + add r10d,DWORD[4+rsp] > + mov edi,r11d > + xor r12d,r9d > + ror r14d,11 > + xor edi,eax > + add r10d,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,r11d > + add r10d,r13d > + xor r15d,eax > + ror r14d,2 > + add ecx,r10d > + add r10d,r15d > + mov r13d,ecx > + add r14d,r10d > + ror r13d,14 > + mov r10d,r14d > + mov r12d,edx > + ror r14d,9 > + xor r13d,ecx > + xor r12d,r8d > + ror r13d,5 > + xor r14d,r10d > + and r12d,ecx > + xor r13d,ecx > + add r9d,DWORD[8+rsp] > + mov r15d,r10d > + xor r12d,r8d > + ror r14d,11 > + xor r15d,r11d > + add r9d,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,r10d > + add r9d,r13d > + xor edi,r11d > + ror r14d,2 > + add ebx,r9d > + add r9d,edi > + mov r13d,ebx > + add r14d,r9d > + ror r13d,14 > + mov r9d,r14d > + mov r12d,ecx > + ror r14d,9 > + xor r13d,ebx > + xor r12d,edx > + ror r13d,5 > + xor r14d,r9d > + and r12d,ebx > + xor r13d,ebx > + add r8d,DWORD[12+rsp] > + mov edi,r9d > + xor r12d,edx > + ror r14d,11 > + xor edi,r10d > + add r8d,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,r9d > + add r8d,r13d > + xor r15d,r10d > + ror r14d,2 > + add eax,r8d > + add r8d,r15d > + mov r13d,eax > + add r14d,r8d > + ror r13d,14 > + mov r8d,r14d > + mov r12d,ebx > + ror r14d,9 > + xor r13d,eax > + xor r12d,ecx > + ror r13d,5 > + xor r14d,r8d > + and r12d,eax > + xor r13d,eax > + add edx,DWORD[16+rsp] > + mov r15d,r8d > + xor r12d,ecx > + ror r14d,11 > + xor r15d,r9d > + add edx,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,r8d > + add edx,r13d > + xor edi,r9d > + ror r14d,2 > + add r11d,edx > + add edx,edi > + mov r13d,r11d > + add r14d,edx > + ror r13d,14 > + mov edx,r14d > + mov r12d,eax > + ror r14d,9 > + xor r13d,r11d > + xor r12d,ebx > + ror r13d,5 > + xor r14d,edx > + and r12d,r11d > + xor r13d,r11d > + add ecx,DWORD[20+rsp] > + mov edi,edx > + xor r12d,ebx > + ror r14d,11 > + xor edi,r8d > + add ecx,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,edx > + add ecx,r13d > + xor r15d,r8d > + ror r14d,2 > + add r10d,ecx > + add ecx,r15d > + mov r13d,r10d > + add r14d,ecx > + ror r13d,14 > + mov ecx,r14d > + mov r12d,r11d > + ror r14d,9 > + xor r13d,r10d > + xor r12d,eax > + ror r13d,5 > + xor r14d,ecx > + and r12d,r10d > + xor r13d,r10d > + add ebx,DWORD[24+rsp] > + mov r15d,ecx > + xor r12d,eax > + ror r14d,11 > + xor r15d,edx > + add ebx,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,ecx > + add ebx,r13d > + xor edi,edx > + ror r14d,2 > + add r9d,ebx > + add ebx,edi > + mov r13d,r9d > + add r14d,ebx > + ror r13d,14 > + mov ebx,r14d > + mov r12d,r10d > + ror r14d,9 > + xor r13d,r9d > + xor r12d,r11d > + ror r13d,5 > + xor r14d,ebx > + and r12d,r9d > + xor r13d,r9d > + add eax,DWORD[28+rsp] > + mov edi,ebx > + xor r12d,r11d > + ror r14d,11 > + xor edi,ecx > + add eax,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,ebx > + add eax,r13d > + xor r15d,ecx > + ror r14d,2 > + add r8d,eax > + add eax,r15d > + mov r13d,r8d > + add r14d,eax > + ror r13d,14 > + mov eax,r14d > + mov r12d,r9d > + ror r14d,9 > + xor r13d,r8d > + xor r12d,r10d > + ror r13d,5 > + xor r14d,eax > + and r12d,r8d > + xor r13d,r8d > + add r11d,DWORD[32+rsp] > + mov r15d,eax > + xor r12d,r10d > + ror r14d,11 > + xor r15d,ebx > + add r11d,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,eax > + add r11d,r13d > + xor edi,ebx > + ror r14d,2 > + add edx,r11d > + add r11d,edi > + mov r13d,edx > + add r14d,r11d > + ror r13d,14 > + mov r11d,r14d > + mov r12d,r8d > + ror r14d,9 > + xor r13d,edx > + xor r12d,r9d > + ror r13d,5 > + xor r14d,r11d > + and r12d,edx > + xor r13d,edx > + add r10d,DWORD[36+rsp] > + mov edi,r11d > + xor r12d,r9d > + ror r14d,11 > + xor edi,eax > + add r10d,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,r11d > + add r10d,r13d > + xor r15d,eax > + ror r14d,2 > + add ecx,r10d > + add r10d,r15d > + mov r13d,ecx > + add r14d,r10d > + ror r13d,14 > + mov r10d,r14d > + mov r12d,edx > + ror r14d,9 > + xor r13d,ecx > + xor r12d,r8d > + ror r13d,5 > + xor r14d,r10d > + and r12d,ecx > + xor r13d,ecx > + add r9d,DWORD[40+rsp] > + mov r15d,r10d > + xor r12d,r8d > + ror r14d,11 > + xor r15d,r11d > + add r9d,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,r10d > + add r9d,r13d > + xor edi,r11d > + ror r14d,2 > + add ebx,r9d > + add r9d,edi > + mov r13d,ebx > + add r14d,r9d > + ror r13d,14 > + mov r9d,r14d > + mov r12d,ecx > + ror r14d,9 > + xor r13d,ebx > + xor r12d,edx > + ror r13d,5 > + xor r14d,r9d > + and r12d,ebx > + xor r13d,ebx > + add r8d,DWORD[44+rsp] > + mov edi,r9d > + xor r12d,edx > + ror r14d,11 > + xor edi,r10d > + add r8d,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,r9d > + add r8d,r13d > + xor r15d,r10d > + ror r14d,2 > + add eax,r8d > + add r8d,r15d > + mov r13d,eax > + add r14d,r8d > + ror r13d,14 > + mov r8d,r14d > + mov r12d,ebx > + ror r14d,9 > + xor r13d,eax > + xor r12d,ecx > + ror r13d,5 > + xor r14d,r8d > + and r12d,eax > + xor r13d,eax > + add edx,DWORD[48+rsp] > + mov r15d,r8d > + xor r12d,ecx > + ror r14d,11 > + xor r15d,r9d > + add edx,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,r8d > + add edx,r13d > + xor edi,r9d > + ror r14d,2 > + add r11d,edx > + add edx,edi > + mov r13d,r11d > + add r14d,edx > + ror r13d,14 > + mov edx,r14d > + mov r12d,eax > + ror r14d,9 > + xor r13d,r11d > + xor r12d,ebx > + ror r13d,5 > + xor r14d,edx > + and r12d,r11d > + xor r13d,r11d > + add ecx,DWORD[52+rsp] > + mov edi,edx > + xor r12d,ebx > + ror r14d,11 > + xor edi,r8d > + add ecx,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,edx > + add ecx,r13d > + xor r15d,r8d > + ror r14d,2 > + add r10d,ecx > + add ecx,r15d > + mov r13d,r10d > + add r14d,ecx > + ror r13d,14 > + mov ecx,r14d > + mov r12d,r11d > + ror r14d,9 > + xor r13d,r10d > + xor r12d,eax > + ror r13d,5 > + xor r14d,ecx > + and r12d,r10d > + xor r13d,r10d > + add ebx,DWORD[56+rsp] > + mov r15d,ecx > + xor r12d,eax > + ror r14d,11 > + xor r15d,edx > + add ebx,r12d > + ror r13d,6 > + and edi,r15d > + xor r14d,ecx > + add ebx,r13d > + xor edi,edx > + ror r14d,2 > + add r9d,ebx > + add ebx,edi > + mov r13d,r9d > + add r14d,ebx > + ror r13d,14 > + mov ebx,r14d > + mov r12d,r10d > + ror r14d,9 > + xor r13d,r9d > + xor r12d,r11d > + ror r13d,5 > + xor r14d,ebx > + and r12d,r9d > + xor r13d,r9d > + add eax,DWORD[60+rsp] > + mov edi,ebx > + xor r12d,r11d > + ror r14d,11 > + xor edi,ecx > + add eax,r12d > + ror r13d,6 > + and r15d,edi > + xor r14d,ebx > + add eax,r13d > + xor r15d,ecx > + ror r14d,2 > + add r8d,eax > + add eax,r15d > + mov r13d,r8d > + add r14d,eax > + mov rdi,QWORD[((64+0))+rsp] > + mov eax,r14d > + > + add eax,DWORD[rdi] > + lea rsi,[64+rsi] > + add ebx,DWORD[4+rdi] > + add ecx,DWORD[8+rdi] > + add edx,DWORD[12+rdi] > + add r8d,DWORD[16+rdi] > + add r9d,DWORD[20+rdi] > + add r10d,DWORD[24+rdi] > + add r11d,DWORD[28+rdi] > + > + cmp rsi,QWORD[((64+16))+rsp] > + > + mov DWORD[rdi],eax > + mov DWORD[4+rdi],ebx > + mov DWORD[8+rdi],ecx > + mov DWORD[12+rdi],edx > + mov DWORD[16+rdi],r8d > + mov DWORD[20+rdi],r9d > + mov DWORD[24+rdi],r10d > + mov DWORD[28+rdi],r11d > + jb NEAR $L$loop_ssse3 > + > + mov rsi,QWORD[88+rsp] > + > + movaps xmm6,XMMWORD[((64+32))+rsp] > + movaps xmm7,XMMWORD[((64+48))+rsp] > + movaps xmm8,XMMWORD[((64+64))+rsp] > + movaps xmm9,XMMWORD[((64+80))+rsp] > + mov r15,QWORD[((-48))+rsi] > + > + mov r14,QWORD[((-40))+rsi] > + > + mov r13,QWORD[((-32))+rsi] > + > + mov r12,QWORD[((-24))+rsi] > + > + mov rbp,QWORD[((-16))+rsi] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$epilogue_ssse3: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha256_block_data_order_ssse3: > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + mov rsi,rax > + mov rax,QWORD[((64+24))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov r15,QWORD[((-48))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + mov QWORD[240+r8],r15 > + > + lea r10,[$L$epilogue] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + lea rsi,[((64+32))+rsi] > + lea rdi,[512+r8] > + mov ecx,8 > + DD 0xa548f3fc > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > + > +ALIGN 16 > +shaext_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + lea r10,[$L$prologue_shaext] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + lea r10,[$L$epilogue_shaext] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + > + lea rsi,[((-8-80))+rax] > + lea rdi,[512+r8] > + mov ecx,10 > + DD 0xa548f3fc > + > + jmp NEAR $L$in_prologue > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase > + DD $L$SEH_end_sha256_block_data_order wrt ..imagebase > + DD $L$SEH_info_sha256_block_data_order wrt ..imagebase > + DD $L$SEH_begin_sha256_block_data_order_shaext wrt ..imageb= ase > + DD $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebas= e > + DD $L$SEH_info_sha256_block_data_order_shaext wrt ..imageba= se > + DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imageba= se > + DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase > + DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebas= e > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_sha256_block_data_order: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase > +$L$SEH_info_sha256_block_data_order_shaext: > +DB 9,0,0,0 > + DD shaext_handler wrt ..imagebase > +$L$SEH_info_sha256_block_data_order_ssse3: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 > wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.na= sm > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm > new file mode 100644 > index 0000000000..c6397d4393 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm > @@ -0,0 +1,1938 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl > +; > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +section .text code align=3D64 > + > + > +EXTERN OPENSSL_ia32cap_P > +global sha512_block_data_order > + > +ALIGN 16 > +sha512_block_data_order: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_sha512_block_data_order: > + mov rdi,rcx > + mov rsi,rdx > + mov rdx,r8 > + > + > + > + mov rax,rsp > + > + push rbx > + > + push rbp > + > + push r12 > + > + push r13 > + > + push r14 > + > + push r15 > + > + shl rdx,4 > + sub rsp,16*8+4*8 > + lea rdx,[rdx*8+rsi] > + and rsp,-64 > + mov QWORD[((128+0))+rsp],rdi > + mov QWORD[((128+8))+rsp],rsi > + mov QWORD[((128+16))+rsp],rdx > + mov QWORD[152+rsp],rax > + > +$L$prologue: > + > + mov rax,QWORD[rdi] > + mov rbx,QWORD[8+rdi] > + mov rcx,QWORD[16+rdi] > + mov rdx,QWORD[24+rdi] > + mov r8,QWORD[32+rdi] > + mov r9,QWORD[40+rdi] > + mov r10,QWORD[48+rdi] > + mov r11,QWORD[56+rdi] > + jmp NEAR $L$loop > + > +ALIGN 16 > +$L$loop: > + mov rdi,rbx > + lea rbp,[K512] > + xor rdi,rcx > + mov r12,QWORD[rsi] > + mov r13,r8 > + mov r14,rax > + bswap r12 > + ror r13,23 > + mov r15,r9 > + > + xor r13,r8 > + ror r14,5 > + xor r15,r10 > + > + mov QWORD[rsp],r12 > + xor r14,rax > + and r15,r8 > + > + ror r13,4 > + add r12,r11 > + xor r15,r10 > + > + ror r14,6 > + xor r13,r8 > + add r12,r15 > + > + mov r15,rax > + add r12,QWORD[rbp] > + xor r14,rax > + > + xor r15,rbx > + ror r13,14 > + mov r11,rbx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r11,rdi > + add rdx,r12 > + add r11,r12 > + > + lea rbp,[8+rbp] > + add r11,r14 > + mov r12,QWORD[8+rsi] > + mov r13,rdx > + mov r14,r11 > + bswap r12 > + ror r13,23 > + mov rdi,r8 > + > + xor r13,rdx > + ror r14,5 > + xor rdi,r9 > + > + mov QWORD[8+rsp],r12 > + xor r14,r11 > + and rdi,rdx > + > + ror r13,4 > + add r12,r10 > + xor rdi,r9 > + > + ror r14,6 > + xor r13,rdx > + add r12,rdi > + > + mov rdi,r11 > + add r12,QWORD[rbp] > + xor r14,r11 > + > + xor rdi,rax > + ror r13,14 > + mov r10,rax > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r10,r15 > + add rcx,r12 > + add r10,r12 > + > + lea rbp,[24+rbp] > + add r10,r14 > + mov r12,QWORD[16+rsi] > + mov r13,rcx > + mov r14,r10 > + bswap r12 > + ror r13,23 > + mov r15,rdx > + > + xor r13,rcx > + ror r14,5 > + xor r15,r8 > + > + mov QWORD[16+rsp],r12 > + xor r14,r10 > + and r15,rcx > + > + ror r13,4 > + add r12,r9 > + xor r15,r8 > + > + ror r14,6 > + xor r13,rcx > + add r12,r15 > + > + mov r15,r10 > + add r12,QWORD[rbp] > + xor r14,r10 > + > + xor r15,r11 > + ror r13,14 > + mov r9,r11 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r9,rdi > + add rbx,r12 > + add r9,r12 > + > + lea rbp,[8+rbp] > + add r9,r14 > + mov r12,QWORD[24+rsi] > + mov r13,rbx > + mov r14,r9 > + bswap r12 > + ror r13,23 > + mov rdi,rcx > + > + xor r13,rbx > + ror r14,5 > + xor rdi,rdx > + > + mov QWORD[24+rsp],r12 > + xor r14,r9 > + and rdi,rbx > + > + ror r13,4 > + add r12,r8 > + xor rdi,rdx > + > + ror r14,6 > + xor r13,rbx > + add r12,rdi > + > + mov rdi,r9 > + add r12,QWORD[rbp] > + xor r14,r9 > + > + xor rdi,r10 > + ror r13,14 > + mov r8,r10 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r8,r15 > + add rax,r12 > + add r8,r12 > + > + lea rbp,[24+rbp] > + add r8,r14 > + mov r12,QWORD[32+rsi] > + mov r13,rax > + mov r14,r8 > + bswap r12 > + ror r13,23 > + mov r15,rbx > + > + xor r13,rax > + ror r14,5 > + xor r15,rcx > + > + mov QWORD[32+rsp],r12 > + xor r14,r8 > + and r15,rax > + > + ror r13,4 > + add r12,rdx > + xor r15,rcx > + > + ror r14,6 > + xor r13,rax > + add r12,r15 > + > + mov r15,r8 > + add r12,QWORD[rbp] > + xor r14,r8 > + > + xor r15,r9 > + ror r13,14 > + mov rdx,r9 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rdx,rdi > + add r11,r12 > + add rdx,r12 > + > + lea rbp,[8+rbp] > + add rdx,r14 > + mov r12,QWORD[40+rsi] > + mov r13,r11 > + mov r14,rdx > + bswap r12 > + ror r13,23 > + mov rdi,rax > + > + xor r13,r11 > + ror r14,5 > + xor rdi,rbx > + > + mov QWORD[40+rsp],r12 > + xor r14,rdx > + and rdi,r11 > + > + ror r13,4 > + add r12,rcx > + xor rdi,rbx > + > + ror r14,6 > + xor r13,r11 > + add r12,rdi > + > + mov rdi,rdx > + add r12,QWORD[rbp] > + xor r14,rdx > + > + xor rdi,r8 > + ror r13,14 > + mov rcx,r8 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rcx,r15 > + add r10,r12 > + add rcx,r12 > + > + lea rbp,[24+rbp] > + add rcx,r14 > + mov r12,QWORD[48+rsi] > + mov r13,r10 > + mov r14,rcx > + bswap r12 > + ror r13,23 > + mov r15,r11 > + > + xor r13,r10 > + ror r14,5 > + xor r15,rax > + > + mov QWORD[48+rsp],r12 > + xor r14,rcx > + and r15,r10 > + > + ror r13,4 > + add r12,rbx > + xor r15,rax > + > + ror r14,6 > + xor r13,r10 > + add r12,r15 > + > + mov r15,rcx > + add r12,QWORD[rbp] > + xor r14,rcx > + > + xor r15,rdx > + ror r13,14 > + mov rbx,rdx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rbx,rdi > + add r9,r12 > + add rbx,r12 > + > + lea rbp,[8+rbp] > + add rbx,r14 > + mov r12,QWORD[56+rsi] > + mov r13,r9 > + mov r14,rbx > + bswap r12 > + ror r13,23 > + mov rdi,r10 > + > + xor r13,r9 > + ror r14,5 > + xor rdi,r11 > + > + mov QWORD[56+rsp],r12 > + xor r14,rbx > + and rdi,r9 > + > + ror r13,4 > + add r12,rax > + xor rdi,r11 > + > + ror r14,6 > + xor r13,r9 > + add r12,rdi > + > + mov rdi,rbx > + add r12,QWORD[rbp] > + xor r14,rbx > + > + xor rdi,rcx > + ror r13,14 > + mov rax,rcx > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rax,r15 > + add r8,r12 > + add rax,r12 > + > + lea rbp,[24+rbp] > + add rax,r14 > + mov r12,QWORD[64+rsi] > + mov r13,r8 > + mov r14,rax > + bswap r12 > + ror r13,23 > + mov r15,r9 > + > + xor r13,r8 > + ror r14,5 > + xor r15,r10 > + > + mov QWORD[64+rsp],r12 > + xor r14,rax > + and r15,r8 > + > + ror r13,4 > + add r12,r11 > + xor r15,r10 > + > + ror r14,6 > + xor r13,r8 > + add r12,r15 > + > + mov r15,rax > + add r12,QWORD[rbp] > + xor r14,rax > + > + xor r15,rbx > + ror r13,14 > + mov r11,rbx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r11,rdi > + add rdx,r12 > + add r11,r12 > + > + lea rbp,[8+rbp] > + add r11,r14 > + mov r12,QWORD[72+rsi] > + mov r13,rdx > + mov r14,r11 > + bswap r12 > + ror r13,23 > + mov rdi,r8 > + > + xor r13,rdx > + ror r14,5 > + xor rdi,r9 > + > + mov QWORD[72+rsp],r12 > + xor r14,r11 > + and rdi,rdx > + > + ror r13,4 > + add r12,r10 > + xor rdi,r9 > + > + ror r14,6 > + xor r13,rdx > + add r12,rdi > + > + mov rdi,r11 > + add r12,QWORD[rbp] > + xor r14,r11 > + > + xor rdi,rax > + ror r13,14 > + mov r10,rax > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r10,r15 > + add rcx,r12 > + add r10,r12 > + > + lea rbp,[24+rbp] > + add r10,r14 > + mov r12,QWORD[80+rsi] > + mov r13,rcx > + mov r14,r10 > + bswap r12 > + ror r13,23 > + mov r15,rdx > + > + xor r13,rcx > + ror r14,5 > + xor r15,r8 > + > + mov QWORD[80+rsp],r12 > + xor r14,r10 > + and r15,rcx > + > + ror r13,4 > + add r12,r9 > + xor r15,r8 > + > + ror r14,6 > + xor r13,rcx > + add r12,r15 > + > + mov r15,r10 > + add r12,QWORD[rbp] > + xor r14,r10 > + > + xor r15,r11 > + ror r13,14 > + mov r9,r11 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r9,rdi > + add rbx,r12 > + add r9,r12 > + > + lea rbp,[8+rbp] > + add r9,r14 > + mov r12,QWORD[88+rsi] > + mov r13,rbx > + mov r14,r9 > + bswap r12 > + ror r13,23 > + mov rdi,rcx > + > + xor r13,rbx > + ror r14,5 > + xor rdi,rdx > + > + mov QWORD[88+rsp],r12 > + xor r14,r9 > + and rdi,rbx > + > + ror r13,4 > + add r12,r8 > + xor rdi,rdx > + > + ror r14,6 > + xor r13,rbx > + add r12,rdi > + > + mov rdi,r9 > + add r12,QWORD[rbp] > + xor r14,r9 > + > + xor rdi,r10 > + ror r13,14 > + mov r8,r10 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r8,r15 > + add rax,r12 > + add r8,r12 > + > + lea rbp,[24+rbp] > + add r8,r14 > + mov r12,QWORD[96+rsi] > + mov r13,rax > + mov r14,r8 > + bswap r12 > + ror r13,23 > + mov r15,rbx > + > + xor r13,rax > + ror r14,5 > + xor r15,rcx > + > + mov QWORD[96+rsp],r12 > + xor r14,r8 > + and r15,rax > + > + ror r13,4 > + add r12,rdx > + xor r15,rcx > + > + ror r14,6 > + xor r13,rax > + add r12,r15 > + > + mov r15,r8 > + add r12,QWORD[rbp] > + xor r14,r8 > + > + xor r15,r9 > + ror r13,14 > + mov rdx,r9 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rdx,rdi > + add r11,r12 > + add rdx,r12 > + > + lea rbp,[8+rbp] > + add rdx,r14 > + mov r12,QWORD[104+rsi] > + mov r13,r11 > + mov r14,rdx > + bswap r12 > + ror r13,23 > + mov rdi,rax > + > + xor r13,r11 > + ror r14,5 > + xor rdi,rbx > + > + mov QWORD[104+rsp],r12 > + xor r14,rdx > + and rdi,r11 > + > + ror r13,4 > + add r12,rcx > + xor rdi,rbx > + > + ror r14,6 > + xor r13,r11 > + add r12,rdi > + > + mov rdi,rdx > + add r12,QWORD[rbp] > + xor r14,rdx > + > + xor rdi,r8 > + ror r13,14 > + mov rcx,r8 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rcx,r15 > + add r10,r12 > + add rcx,r12 > + > + lea rbp,[24+rbp] > + add rcx,r14 > + mov r12,QWORD[112+rsi] > + mov r13,r10 > + mov r14,rcx > + bswap r12 > + ror r13,23 > + mov r15,r11 > + > + xor r13,r10 > + ror r14,5 > + xor r15,rax > + > + mov QWORD[112+rsp],r12 > + xor r14,rcx > + and r15,r10 > + > + ror r13,4 > + add r12,rbx > + xor r15,rax > + > + ror r14,6 > + xor r13,r10 > + add r12,r15 > + > + mov r15,rcx > + add r12,QWORD[rbp] > + xor r14,rcx > + > + xor r15,rdx > + ror r13,14 > + mov rbx,rdx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rbx,rdi > + add r9,r12 > + add rbx,r12 > + > + lea rbp,[8+rbp] > + add rbx,r14 > + mov r12,QWORD[120+rsi] > + mov r13,r9 > + mov r14,rbx > + bswap r12 > + ror r13,23 > + mov rdi,r10 > + > + xor r13,r9 > + ror r14,5 > + xor rdi,r11 > + > + mov QWORD[120+rsp],r12 > + xor r14,rbx > + and rdi,r9 > + > + ror r13,4 > + add r12,rax > + xor rdi,r11 > + > + ror r14,6 > + xor r13,r9 > + add r12,rdi > + > + mov rdi,rbx > + add r12,QWORD[rbp] > + xor r14,rbx > + > + xor rdi,rcx > + ror r13,14 > + mov rax,rcx > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rax,r15 > + add r8,r12 > + add rax,r12 > + > + lea rbp,[24+rbp] > + jmp NEAR $L$rounds_16_xx > +ALIGN 16 > +$L$rounds_16_xx: > + mov r13,QWORD[8+rsp] > + mov r15,QWORD[112+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rax,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[72+rsp] > + > + add r12,QWORD[rsp] > + mov r13,r8 > + add r12,r15 > + mov r14,rax > + ror r13,23 > + mov r15,r9 > + > + xor r13,r8 > + ror r14,5 > + xor r15,r10 > + > + mov QWORD[rsp],r12 > + xor r14,rax > + and r15,r8 > + > + ror r13,4 > + add r12,r11 > + xor r15,r10 > + > + ror r14,6 > + xor r13,r8 > + add r12,r15 > + > + mov r15,rax > + add r12,QWORD[rbp] > + xor r14,rax > + > + xor r15,rbx > + ror r13,14 > + mov r11,rbx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r11,rdi > + add rdx,r12 > + add r11,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[16+rsp] > + mov rdi,QWORD[120+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r11,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[80+rsp] > + > + add r12,QWORD[8+rsp] > + mov r13,rdx > + add r12,rdi > + mov r14,r11 > + ror r13,23 > + mov rdi,r8 > + > + xor r13,rdx > + ror r14,5 > + xor rdi,r9 > + > + mov QWORD[8+rsp],r12 > + xor r14,r11 > + and rdi,rdx > + > + ror r13,4 > + add r12,r10 > + xor rdi,r9 > + > + ror r14,6 > + xor r13,rdx > + add r12,rdi > + > + mov rdi,r11 > + add r12,QWORD[rbp] > + xor r14,r11 > + > + xor rdi,rax > + ror r13,14 > + mov r10,rax > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r10,r15 > + add rcx,r12 > + add r10,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[24+rsp] > + mov r15,QWORD[rsp] > + > + mov r12,r13 > + ror r13,7 > + add r10,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[88+rsp] > + > + add r12,QWORD[16+rsp] > + mov r13,rcx > + add r12,r15 > + mov r14,r10 > + ror r13,23 > + mov r15,rdx > + > + xor r13,rcx > + ror r14,5 > + xor r15,r8 > + > + mov QWORD[16+rsp],r12 > + xor r14,r10 > + and r15,rcx > + > + ror r13,4 > + add r12,r9 > + xor r15,r8 > + > + ror r14,6 > + xor r13,rcx > + add r12,r15 > + > + mov r15,r10 > + add r12,QWORD[rbp] > + xor r14,r10 > + > + xor r15,r11 > + ror r13,14 > + mov r9,r11 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r9,rdi > + add rbx,r12 > + add r9,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[32+rsp] > + mov rdi,QWORD[8+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r9,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[96+rsp] > + > + add r12,QWORD[24+rsp] > + mov r13,rbx > + add r12,rdi > + mov r14,r9 > + ror r13,23 > + mov rdi,rcx > + > + xor r13,rbx > + ror r14,5 > + xor rdi,rdx > + > + mov QWORD[24+rsp],r12 > + xor r14,r9 > + and rdi,rbx > + > + ror r13,4 > + add r12,r8 > + xor rdi,rdx > + > + ror r14,6 > + xor r13,rbx > + add r12,rdi > + > + mov rdi,r9 > + add r12,QWORD[rbp] > + xor r14,r9 > + > + xor rdi,r10 > + ror r13,14 > + mov r8,r10 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r8,r15 > + add rax,r12 > + add r8,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[40+rsp] > + mov r15,QWORD[16+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r8,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[104+rsp] > + > + add r12,QWORD[32+rsp] > + mov r13,rax > + add r12,r15 > + mov r14,r8 > + ror r13,23 > + mov r15,rbx > + > + xor r13,rax > + ror r14,5 > + xor r15,rcx > + > + mov QWORD[32+rsp],r12 > + xor r14,r8 > + and r15,rax > + > + ror r13,4 > + add r12,rdx > + xor r15,rcx > + > + ror r14,6 > + xor r13,rax > + add r12,r15 > + > + mov r15,r8 > + add r12,QWORD[rbp] > + xor r14,r8 > + > + xor r15,r9 > + ror r13,14 > + mov rdx,r9 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rdx,rdi > + add r11,r12 > + add rdx,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[48+rsp] > + mov rdi,QWORD[24+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rdx,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[112+rsp] > + > + add r12,QWORD[40+rsp] > + mov r13,r11 > + add r12,rdi > + mov r14,rdx > + ror r13,23 > + mov rdi,rax > + > + xor r13,r11 > + ror r14,5 > + xor rdi,rbx > + > + mov QWORD[40+rsp],r12 > + xor r14,rdx > + and rdi,r11 > + > + ror r13,4 > + add r12,rcx > + xor rdi,rbx > + > + ror r14,6 > + xor r13,r11 > + add r12,rdi > + > + mov rdi,rdx > + add r12,QWORD[rbp] > + xor r14,rdx > + > + xor rdi,r8 > + ror r13,14 > + mov rcx,r8 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rcx,r15 > + add r10,r12 > + add rcx,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[56+rsp] > + mov r15,QWORD[32+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rcx,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[120+rsp] > + > + add r12,QWORD[48+rsp] > + mov r13,r10 > + add r12,r15 > + mov r14,rcx > + ror r13,23 > + mov r15,r11 > + > + xor r13,r10 > + ror r14,5 > + xor r15,rax > + > + mov QWORD[48+rsp],r12 > + xor r14,rcx > + and r15,r10 > + > + ror r13,4 > + add r12,rbx > + xor r15,rax > + > + ror r14,6 > + xor r13,r10 > + add r12,r15 > + > + mov r15,rcx > + add r12,QWORD[rbp] > + xor r14,rcx > + > + xor r15,rdx > + ror r13,14 > + mov rbx,rdx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rbx,rdi > + add r9,r12 > + add rbx,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[64+rsp] > + mov rdi,QWORD[40+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rbx,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[rsp] > + > + add r12,QWORD[56+rsp] > + mov r13,r9 > + add r12,rdi > + mov r14,rbx > + ror r13,23 > + mov rdi,r10 > + > + xor r13,r9 > + ror r14,5 > + xor rdi,r11 > + > + mov QWORD[56+rsp],r12 > + xor r14,rbx > + and rdi,r9 > + > + ror r13,4 > + add r12,rax > + xor rdi,r11 > + > + ror r14,6 > + xor r13,r9 > + add r12,rdi > + > + mov rdi,rbx > + add r12,QWORD[rbp] > + xor r14,rbx > + > + xor rdi,rcx > + ror r13,14 > + mov rax,rcx > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rax,r15 > + add r8,r12 > + add rax,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[72+rsp] > + mov r15,QWORD[48+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rax,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[8+rsp] > + > + add r12,QWORD[64+rsp] > + mov r13,r8 > + add r12,r15 > + mov r14,rax > + ror r13,23 > + mov r15,r9 > + > + xor r13,r8 > + ror r14,5 > + xor r15,r10 > + > + mov QWORD[64+rsp],r12 > + xor r14,rax > + and r15,r8 > + > + ror r13,4 > + add r12,r11 > + xor r15,r10 > + > + ror r14,6 > + xor r13,r8 > + add r12,r15 > + > + mov r15,rax > + add r12,QWORD[rbp] > + xor r14,rax > + > + xor r15,rbx > + ror r13,14 > + mov r11,rbx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r11,rdi > + add rdx,r12 > + add r11,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[80+rsp] > + mov rdi,QWORD[56+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r11,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[16+rsp] > + > + add r12,QWORD[72+rsp] > + mov r13,rdx > + add r12,rdi > + mov r14,r11 > + ror r13,23 > + mov rdi,r8 > + > + xor r13,rdx > + ror r14,5 > + xor rdi,r9 > + > + mov QWORD[72+rsp],r12 > + xor r14,r11 > + and rdi,rdx > + > + ror r13,4 > + add r12,r10 > + xor rdi,r9 > + > + ror r14,6 > + xor r13,rdx > + add r12,rdi > + > + mov rdi,r11 > + add r12,QWORD[rbp] > + xor r14,r11 > + > + xor rdi,rax > + ror r13,14 > + mov r10,rax > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r10,r15 > + add rcx,r12 > + add r10,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[88+rsp] > + mov r15,QWORD[64+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r10,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[24+rsp] > + > + add r12,QWORD[80+rsp] > + mov r13,rcx > + add r12,r15 > + mov r14,r10 > + ror r13,23 > + mov r15,rdx > + > + xor r13,rcx > + ror r14,5 > + xor r15,r8 > + > + mov QWORD[80+rsp],r12 > + xor r14,r10 > + and r15,rcx > + > + ror r13,4 > + add r12,r9 > + xor r15,r8 > + > + ror r14,6 > + xor r13,rcx > + add r12,r15 > + > + mov r15,r10 > + add r12,QWORD[rbp] > + xor r14,r10 > + > + xor r15,r11 > + ror r13,14 > + mov r9,r11 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor r9,rdi > + add rbx,r12 > + add r9,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[96+rsp] > + mov rdi,QWORD[72+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r9,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[32+rsp] > + > + add r12,QWORD[88+rsp] > + mov r13,rbx > + add r12,rdi > + mov r14,r9 > + ror r13,23 > + mov rdi,rcx > + > + xor r13,rbx > + ror r14,5 > + xor rdi,rdx > + > + mov QWORD[88+rsp],r12 > + xor r14,r9 > + and rdi,rbx > + > + ror r13,4 > + add r12,r8 > + xor rdi,rdx > + > + ror r14,6 > + xor r13,rbx > + add r12,rdi > + > + mov rdi,r9 > + add r12,QWORD[rbp] > + xor r14,r9 > + > + xor rdi,r10 > + ror r13,14 > + mov r8,r10 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor r8,r15 > + add rax,r12 > + add r8,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[104+rsp] > + mov r15,QWORD[80+rsp] > + > + mov r12,r13 > + ror r13,7 > + add r8,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[40+rsp] > + > + add r12,QWORD[96+rsp] > + mov r13,rax > + add r12,r15 > + mov r14,r8 > + ror r13,23 > + mov r15,rbx > + > + xor r13,rax > + ror r14,5 > + xor r15,rcx > + > + mov QWORD[96+rsp],r12 > + xor r14,r8 > + and r15,rax > + > + ror r13,4 > + add r12,rdx > + xor r15,rcx > + > + ror r14,6 > + xor r13,rax > + add r12,r15 > + > + mov r15,r8 > + add r12,QWORD[rbp] > + xor r14,r8 > + > + xor r15,r9 > + ror r13,14 > + mov rdx,r9 > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rdx,rdi > + add r11,r12 > + add rdx,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[112+rsp] > + mov rdi,QWORD[88+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rdx,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[48+rsp] > + > + add r12,QWORD[104+rsp] > + mov r13,r11 > + add r12,rdi > + mov r14,rdx > + ror r13,23 > + mov rdi,rax > + > + xor r13,r11 > + ror r14,5 > + xor rdi,rbx > + > + mov QWORD[104+rsp],r12 > + xor r14,rdx > + and rdi,r11 > + > + ror r13,4 > + add r12,rcx > + xor rdi,rbx > + > + ror r14,6 > + xor r13,r11 > + add r12,rdi > + > + mov rdi,rdx > + add r12,QWORD[rbp] > + xor r14,rdx > + > + xor rdi,r8 > + ror r13,14 > + mov rcx,r8 > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rcx,r15 > + add r10,r12 > + add rcx,r12 > + > + lea rbp,[24+rbp] > + mov r13,QWORD[120+rsp] > + mov r15,QWORD[96+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rcx,r14 > + mov r14,r15 > + ror r15,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor r15,r14 > + shr r14,6 > + > + ror r15,19 > + xor r12,r13 > + xor r15,r14 > + add r12,QWORD[56+rsp] > + > + add r12,QWORD[112+rsp] > + mov r13,r10 > + add r12,r15 > + mov r14,rcx > + ror r13,23 > + mov r15,r11 > + > + xor r13,r10 > + ror r14,5 > + xor r15,rax > + > + mov QWORD[112+rsp],r12 > + xor r14,rcx > + and r15,r10 > + > + ror r13,4 > + add r12,rbx > + xor r15,rax > + > + ror r14,6 > + xor r13,r10 > + add r12,r15 > + > + mov r15,rcx > + add r12,QWORD[rbp] > + xor r14,rcx > + > + xor r15,rdx > + ror r13,14 > + mov rbx,rdx > + > + and rdi,r15 > + ror r14,28 > + add r12,r13 > + > + xor rbx,rdi > + add r9,r12 > + add rbx,r12 > + > + lea rbp,[8+rbp] > + mov r13,QWORD[rsp] > + mov rdi,QWORD[104+rsp] > + > + mov r12,r13 > + ror r13,7 > + add rbx,r14 > + mov r14,rdi > + ror rdi,42 > + > + xor r13,r12 > + shr r12,7 > + ror r13,1 > + xor rdi,r14 > + shr r14,6 > + > + ror rdi,19 > + xor r12,r13 > + xor rdi,r14 > + add r12,QWORD[64+rsp] > + > + add r12,QWORD[120+rsp] > + mov r13,r9 > + add r12,rdi > + mov r14,rbx > + ror r13,23 > + mov rdi,r10 > + > + xor r13,r9 > + ror r14,5 > + xor rdi,r11 > + > + mov QWORD[120+rsp],r12 > + xor r14,rbx > + and rdi,r9 > + > + ror r13,4 > + add r12,rax > + xor rdi,r11 > + > + ror r14,6 > + xor r13,r9 > + add r12,rdi > + > + mov rdi,rbx > + add r12,QWORD[rbp] > + xor r14,rbx > + > + xor rdi,rcx > + ror r13,14 > + mov rax,rcx > + > + and r15,rdi > + ror r14,28 > + add r12,r13 > + > + xor rax,r15 > + add r8,r12 > + add rax,r12 > + > + lea rbp,[24+rbp] > + cmp BYTE[7+rbp],0 > + jnz NEAR $L$rounds_16_xx > + > + mov rdi,QWORD[((128+0))+rsp] > + add rax,r14 > + lea rsi,[128+rsi] > + > + add rax,QWORD[rdi] > + add rbx,QWORD[8+rdi] > + add rcx,QWORD[16+rdi] > + add rdx,QWORD[24+rdi] > + add r8,QWORD[32+rdi] > + add r9,QWORD[40+rdi] > + add r10,QWORD[48+rdi] > + add r11,QWORD[56+rdi] > + > + cmp rsi,QWORD[((128+16))+rsp] > + > + mov QWORD[rdi],rax > + mov QWORD[8+rdi],rbx > + mov QWORD[16+rdi],rcx > + mov QWORD[24+rdi],rdx > + mov QWORD[32+rdi],r8 > + mov QWORD[40+rdi],r9 > + mov QWORD[48+rdi],r10 > + mov QWORD[56+rdi],r11 > + jb NEAR $L$loop > + > + mov rsi,QWORD[152+rsp] > + > + mov r15,QWORD[((-48))+rsi] > + > + mov r14,QWORD[((-40))+rsi] > + > + mov r13,QWORD[((-32))+rsi] > + > + mov r12,QWORD[((-24))+rsi] > + > + mov rbp,QWORD[((-16))+rsi] > + > + mov rbx,QWORD[((-8))+rsi] > + > + lea rsp,[rsi] > + > +$L$epilogue: > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_sha512_block_data_order: > +ALIGN 64 > + > +K512: > + DQ 0x428a2f98d728ae22,0x7137449123ef65cd > + DQ 0x428a2f98d728ae22,0x7137449123ef65cd > + DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc > + DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc > + DQ 0x3956c25bf348b538,0x59f111f1b605d019 > + DQ 0x3956c25bf348b538,0x59f111f1b605d019 > + DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 > + DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 > + DQ 0xd807aa98a3030242,0x12835b0145706fbe > + DQ 0xd807aa98a3030242,0x12835b0145706fbe > + DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 > + DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 > + DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 > + DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 > + DQ 0x9bdc06a725c71235,0xc19bf174cf692694 > + DQ 0x9bdc06a725c71235,0xc19bf174cf692694 > + DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 > + DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 > + DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 > + DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 > + DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 > + DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 > + DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 > + DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 > + DQ 0x983e5152ee66dfab,0xa831c66d2db43210 > + DQ 0x983e5152ee66dfab,0xa831c66d2db43210 > + DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 > + DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 > + DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 > + DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 > + DQ 0x06ca6351e003826f,0x142929670a0e6e70 > + DQ 0x06ca6351e003826f,0x142929670a0e6e70 > + DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 > + DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 > + DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df > + DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df > + DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 > + DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 > + DQ 0x81c2c92e47edaee6,0x92722c851482353b > + DQ 0x81c2c92e47edaee6,0x92722c851482353b > + DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 > + DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 > + DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 > + DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 > + DQ 0xd192e819d6ef5218,0xd69906245565a910 > + DQ 0xd192e819d6ef5218,0xd69906245565a910 > + DQ 0xf40e35855771202a,0x106aa07032bbd1b8 > + DQ 0xf40e35855771202a,0x106aa07032bbd1b8 > + DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 > + DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 > + DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 > + DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 > + DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb > + DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb > + DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 > + DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 > + DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 > + DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 > + DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec > + DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec > + DQ 0x90befffa23631e28,0xa4506cebde82bde9 > + DQ 0x90befffa23631e28,0xa4506cebde82bde9 > + DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b > + DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b > + DQ 0xca273eceea26619c,0xd186b8c721c0c207 > + DQ 0xca273eceea26619c,0xd186b8c721c0c207 > + DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 > + DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 > + DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 > + DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 > + DQ 0x113f9804bef90dae,0x1b710b35131c471b > + DQ 0x113f9804bef90dae,0x1b710b35131c471b > + DQ 0x28db77f523047d84,0x32caab7b40c72493 > + DQ 0x28db77f523047d84,0x32caab7b40c72493 > + DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c > + DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c > + DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a > + DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a > + DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 > + DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 > + > + DQ 0x0001020304050607,0x08090a0b0c0d0e0f > + DQ 0x0001020304050607,0x08090a0b0c0d0e0f > +DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 > +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 > +DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 > +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 > +DB 111,114,103,62,0 > +EXTERN __imp_RtlVirtualUnwind > + > +ALIGN 16 > +se_handler: > + push rsi > + push rdi > + push rbx > + push rbp > + push r12 > + push r13 > + push r14 > + push r15 > + pushfq > + sub rsp,64 > + > + mov rax,QWORD[120+r8] > + mov rbx,QWORD[248+r8] > + > + mov rsi,QWORD[8+r9] > + mov r11,QWORD[56+r9] > + > + mov r10d,DWORD[r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + mov rax,QWORD[152+r8] > + > + mov r10d,DWORD[4+r11] > + lea r10,[r10*1+rsi] > + cmp rbx,r10 > + jae NEAR $L$in_prologue > + mov rsi,rax > + mov rax,QWORD[((128+24))+rax] > + > + mov rbx,QWORD[((-8))+rax] > + mov rbp,QWORD[((-16))+rax] > + mov r12,QWORD[((-24))+rax] > + mov r13,QWORD[((-32))+rax] > + mov r14,QWORD[((-40))+rax] > + mov r15,QWORD[((-48))+rax] > + mov QWORD[144+r8],rbx > + mov QWORD[160+r8],rbp > + mov QWORD[216+r8],r12 > + mov QWORD[224+r8],r13 > + mov QWORD[232+r8],r14 > + mov QWORD[240+r8],r15 > + > + lea r10,[$L$epilogue] > + cmp rbx,r10 > + jb NEAR $L$in_prologue > + > + lea rsi,[((128+32))+rsi] > + lea rdi,[512+r8] > + mov ecx,12 > + DD 0xa548f3fc > + > +$L$in_prologue: > + mov rdi,QWORD[8+rax] > + mov rsi,QWORD[16+rax] > + mov QWORD[152+r8],rax > + mov QWORD[168+r8],rsi > + mov QWORD[176+r8],rdi > + > + mov rdi,QWORD[40+r9] > + mov rsi,r8 > + mov ecx,154 > + DD 0xa548f3fc > + > + mov rsi,r9 > + xor rcx,rcx > + mov rdx,QWORD[8+rsi] > + mov r8,QWORD[rsi] > + mov r9,QWORD[16+rsi] > + mov r10,QWORD[40+rsi] > + lea r11,[56+rsi] > + lea r12,[24+rsi] > + mov QWORD[32+rsp],r10 > + mov QWORD[40+rsp],r11 > + mov QWORD[48+rsp],r12 > + mov QWORD[56+rsp],rcx > + call QWORD[__imp_RtlVirtualUnwind] > + > + mov eax,1 > + add rsp,64 > + popfq > + pop r15 > + pop r14 > + pop r13 > + pop r12 > + pop rbp > + pop rbx > + pop rdi > + pop rsi > + DB 0F3h,0C3h ;repret > + > +section .pdata rdata align=3D4 > +ALIGN 4 > + DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase > + DD $L$SEH_end_sha512_block_data_order wrt ..imagebase > + DD $L$SEH_info_sha512_block_data_order wrt ..imagebase > +section .xdata rdata align=3D8 > +ALIGN 8 > +$L$SEH_info_sha512_block_data_order: > +DB 9,0,0,0 > + DD se_handler wrt ..imagebase > + DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm > new file mode 100644 > index 0000000000..2a3d5bcf72 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm > @@ -0,0 +1,491 @@ > +; WARNING: do not edit! > +; Generated from openssl/crypto/x86_64cpuid.pl > +; > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +; > +; Licensed under the OpenSSL license (the "License"). You may not use > +; this file except in compliance with the License. You can obtain a cop= y > +; in the file LICENSE in the source distribution or at > +; https://www.openssl.org/source/license.html > + > +default rel > +%define XMMWORD > +%define YMMWORD > +%define ZMMWORD > +EXTERN OPENSSL_cpuid_setup > + > +section .CRT$XCU rdata align=3D8 > + DQ OPENSSL_cpuid_setup > + > + > +common OPENSSL_ia32cap_P 16 > + > +section .text code align=3D64 > + > + > +global OPENSSL_atomic_add > + > +ALIGN 16 > +OPENSSL_atomic_add: > + > + mov eax,DWORD[rcx] > +$L$spin: lea r8,[rax*1+rdx] > +DB 0xf0 > + cmpxchg DWORD[rcx],r8d > + jne NEAR $L$spin > + mov eax,r8d > +DB 0x48,0x98 > + DB 0F3h,0C3h ;repret > + > + > + > +global OPENSSL_rdtsc > + > +ALIGN 16 > +OPENSSL_rdtsc: > + > + rdtsc > + shl rdx,32 > + or rax,rdx > + DB 0F3h,0C3h ;repret > + > + > + > +global OPENSSL_ia32_cpuid > + > +ALIGN 16 > +OPENSSL_ia32_cpuid: > + mov QWORD[8+rsp],rdi ;WIN64 prologue > + mov QWORD[16+rsp],rsi > + mov rax,rsp > +$L$SEH_begin_OPENSSL_ia32_cpuid: > + mov rdi,rcx > + > + > + > + mov r8,rbx > + > + > + xor eax,eax > + mov QWORD[8+rdi],rax > + cpuid > + mov r11d,eax > + > + xor eax,eax > + cmp ebx,0x756e6547 > + setne al > + mov r9d,eax > + cmp edx,0x49656e69 > + setne al > + or r9d,eax > + cmp ecx,0x6c65746e > + setne al > + or r9d,eax > + jz NEAR $L$intel > + > + cmp ebx,0x68747541 > + setne al > + mov r10d,eax > + cmp edx,0x69746E65 > + setne al > + or r10d,eax > + cmp ecx,0x444D4163 > + setne al > + or r10d,eax > + jnz NEAR $L$intel > + > + > + mov eax,0x80000000 > + cpuid > + cmp eax,0x80000001 > + jb NEAR $L$intel > + mov r10d,eax > + mov eax,0x80000001 > + cpuid > + or r9d,ecx > + and r9d,0x00000801 > + > + cmp r10d,0x80000008 > + jb NEAR $L$intel > + > + mov eax,0x80000008 > + cpuid > + movzx r10,cl > + inc r10 > + > + mov eax,1 > + cpuid > + bt edx,28 > + jnc NEAR $L$generic > + shr ebx,16 > + cmp bl,r10b > + ja NEAR $L$generic > + and edx,0xefffffff > + jmp NEAR $L$generic > + > +$L$intel: > + cmp r11d,4 > + mov r10d,-1 > + jb NEAR $L$nocacheinfo > + > + mov eax,4 > + mov ecx,0 > + cpuid > + mov r10d,eax > + shr r10d,14 > + and r10d,0xfff > + > +$L$nocacheinfo: > + mov eax,1 > + cpuid > + movd xmm0,eax > + and edx,0xbfefffff > + cmp r9d,0 > + jne NEAR $L$notintel > + or edx,0x40000000 > + and ah,15 > + cmp ah,15 > + jne NEAR $L$notP4 > + or edx,0x00100000 > +$L$notP4: > + cmp ah,6 > + jne NEAR $L$notintel > + and eax,0x0fff0ff0 > + cmp eax,0x00050670 > + je NEAR $L$knights > + cmp eax,0x00080650 > + jne NEAR $L$notintel > +$L$knights: > + and ecx,0xfbffffff > + > +$L$notintel: > + bt edx,28 > + jnc NEAR $L$generic > + and edx,0xefffffff > + cmp r10d,0 > + je NEAR $L$generic > + > + or edx,0x10000000 > + shr ebx,16 > + cmp bl,1 > + ja NEAR $L$generic > + and edx,0xefffffff > +$L$generic: > + and r9d,0x00000800 > + and ecx,0xfffff7ff > + or r9d,ecx > + > + mov r10d,edx > + > + cmp r11d,7 > + jb NEAR $L$no_extended_info > + mov eax,7 > + xor ecx,ecx > + cpuid > + bt r9d,26 > + jc NEAR $L$notknights > + and ebx,0xfff7ffff > +$L$notknights: > + movd eax,xmm0 > + and eax,0x0fff0ff0 > + cmp eax,0x00050650 > + jne NEAR $L$notskylakex > + and ebx,0xfffeffff > + > +$L$notskylakex: > + mov DWORD[8+rdi],ebx > + mov DWORD[12+rdi],ecx > +$L$no_extended_info: > + > + bt r9d,27 > + jnc NEAR $L$clear_avx > + xor ecx,ecx > +DB 0x0f,0x01,0xd0 > + and eax,0xe6 > + cmp eax,0xe6 > + je NEAR $L$done > + and DWORD[8+rdi],0x3fdeffff > + > + > + > + > + and eax,6 > + cmp eax,6 > + je NEAR $L$done > +$L$clear_avx: > + mov eax,0xefffe7ff > + and r9d,eax > + mov eax,0x3fdeffdf > + and DWORD[8+rdi],eax > +$L$done: > + shl r9,32 > + mov eax,r10d > + mov rbx,r8 > + > + or rax,r9 > + mov rdi,QWORD[8+rsp] ;WIN64 epilogue > + mov rsi,QWORD[16+rsp] > + DB 0F3h,0C3h ;repret > + > +$L$SEH_end_OPENSSL_ia32_cpuid: > + > +global OPENSSL_cleanse > + > +ALIGN 16 > +OPENSSL_cleanse: > + > + xor rax,rax > + cmp rdx,15 > + jae NEAR $L$ot > + cmp rdx,0 > + je NEAR $L$ret > +$L$ittle: > + mov BYTE[rcx],al > + sub rdx,1 > + lea rcx,[1+rcx] > + jnz NEAR $L$ittle > +$L$ret: > + DB 0F3h,0C3h ;repret > +ALIGN 16 > +$L$ot: > + test rcx,7 > + jz NEAR $L$aligned > + mov BYTE[rcx],al > + lea rdx,[((-1))+rdx] > + lea rcx,[1+rcx] > + jmp NEAR $L$ot > +$L$aligned: > + mov QWORD[rcx],rax > + lea rdx,[((-8))+rdx] > + test rdx,-8 > + lea rcx,[8+rcx] > + jnz NEAR $L$aligned > + cmp rdx,0 > + jne NEAR $L$ittle > + DB 0F3h,0C3h ;repret > + > + > + > +global CRYPTO_memcmp > + > +ALIGN 16 > +CRYPTO_memcmp: > + > + xor rax,rax > + xor r10,r10 > + cmp r8,0 > + je NEAR $L$no_data > + cmp r8,16 > + jne NEAR $L$oop_cmp > + mov r10,QWORD[rcx] > + mov r11,QWORD[8+rcx] > + mov r8,1 > + xor r10,QWORD[rdx] > + xor r11,QWORD[8+rdx] > + or r10,r11 > + cmovnz rax,r8 > + DB 0F3h,0C3h ;repret > + > +ALIGN 16 > +$L$oop_cmp: > + mov r10b,BYTE[rcx] > + lea rcx,[1+rcx] > + xor r10b,BYTE[rdx] > + lea rdx,[1+rdx] > + or al,r10b > + dec r8 > + jnz NEAR $L$oop_cmp > + neg rax > + shr rax,63 > +$L$no_data: > + DB 0F3h,0C3h ;repret > + > + > +global OPENSSL_wipe_cpu > + > +ALIGN 16 > +OPENSSL_wipe_cpu: > + pxor xmm0,xmm0 > + pxor xmm1,xmm1 > + pxor xmm2,xmm2 > + pxor xmm3,xmm3 > + pxor xmm4,xmm4 > + pxor xmm5,xmm5 > + xor rcx,rcx > + xor rdx,rdx > + xor r8,r8 > + xor r9,r9 > + xor r10,r10 > + xor r11,r11 > + lea rax,[8+rsp] > + DB 0F3h,0C3h ;repret > + > +global OPENSSL_instrument_bus > + > +ALIGN 16 > +OPENSSL_instrument_bus: > + > + mov r10,rcx > + mov rcx,rdx > + mov r11,rdx > + > + rdtsc > + mov r8d,eax > + mov r9d,0 > + clflush [r10] > +DB 0xf0 > + add DWORD[r10],r9d > + jmp NEAR $L$oop > +ALIGN 16 > +$L$oop: rdtsc > + mov edx,eax > + sub eax,r8d > + mov r8d,edx > + mov r9d,eax > + clflush [r10] > +DB 0xf0 > + add DWORD[r10],eax > + lea r10,[4+r10] > + sub rcx,1 > + jnz NEAR $L$oop > + > + mov rax,r11 > + DB 0F3h,0C3h ;repret > + > + > + > +global OPENSSL_instrument_bus2 > + > +ALIGN 16 > +OPENSSL_instrument_bus2: > + > + mov r10,rcx > + mov rcx,rdx > + mov r11,r8 > + mov QWORD[8+rsp],rcx > + > + rdtsc > + mov r8d,eax > + mov r9d,0 > + > + clflush [r10] > +DB 0xf0 > + add DWORD[r10],r9d > + > + rdtsc > + mov edx,eax > + sub eax,r8d > + mov r8d,edx > + mov r9d,eax > +$L$oop2: > + clflush [r10] > +DB 0xf0 > + add DWORD[r10],eax > + > + sub r11,1 > + jz NEAR $L$done2 > + > + rdtsc > + mov edx,eax > + sub eax,r8d > + mov r8d,edx > + cmp eax,r9d > + mov r9d,eax > + mov edx,0 > + setne dl > + sub rcx,rdx > + lea r10,[rdx*4+r10] > + jnz NEAR $L$oop2 > + > +$L$done2: > + mov rax,QWORD[8+rsp] > + sub rax,rcx > + DB 0F3h,0C3h ;repret > + > + > +global OPENSSL_ia32_rdrand_bytes > + > +ALIGN 16 > +OPENSSL_ia32_rdrand_bytes: > + > + xor rax,rax > + cmp rdx,0 > + je NEAR $L$done_rdrand_bytes > + > + mov r11,8 > +$L$oop_rdrand_bytes: > +DB 73,15,199,242 > + jc NEAR $L$break_rdrand_bytes > + dec r11 > + jnz NEAR $L$oop_rdrand_bytes > + jmp NEAR $L$done_rdrand_bytes > + > +ALIGN 16 > +$L$break_rdrand_bytes: > + cmp rdx,8 > + jb NEAR $L$tail_rdrand_bytes > + mov QWORD[rcx],r10 > + lea rcx,[8+rcx] > + add rax,8 > + sub rdx,8 > + jz NEAR $L$done_rdrand_bytes > + mov r11,8 > + jmp NEAR $L$oop_rdrand_bytes > + > +ALIGN 16 > +$L$tail_rdrand_bytes: > + mov BYTE[rcx],r10b > + lea rcx,[1+rcx] > + inc rax > + shr r10,8 > + dec rdx > + jnz NEAR $L$tail_rdrand_bytes > + > +$L$done_rdrand_bytes: > + xor r10,r10 > + DB 0F3h,0C3h ;repret > + > + > +global OPENSSL_ia32_rdseed_bytes > + > +ALIGN 16 > +OPENSSL_ia32_rdseed_bytes: > + > + xor rax,rax > + cmp rdx,0 > + je NEAR $L$done_rdseed_bytes > + > + mov r11,8 > +$L$oop_rdseed_bytes: > +DB 73,15,199,250 > + jc NEAR $L$break_rdseed_bytes > + dec r11 > + jnz NEAR $L$oop_rdseed_bytes > + jmp NEAR $L$done_rdseed_bytes > + > +ALIGN 16 > +$L$break_rdseed_bytes: > + cmp rdx,8 > + jb NEAR $L$tail_rdseed_bytes > + mov QWORD[rcx],r10 > + lea rcx,[8+rcx] > + add rax,8 > + sub rdx,8 > + jz NEAR $L$done_rdseed_bytes > + mov r11,8 > + jmp NEAR $L$oop_rdseed_bytes > + > +ALIGN 16 > +$L$tail_rdseed_bytes: > + mov BYTE[rcx],r10b > + lea rcx,[1+rcx] > + inc rax > + shr r10,8 > + dec rdx > + jnz NEAR $L$tail_rdseed_bytes > + > +$L$done_rdseed_bytes: > + xor r10,r10 > + DB 0F3h,0C3h ;repret > + > + > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb- > x86_64.S > new file mode 100644 > index 0000000000..7749fd685a > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb-x86_64.S > @@ -0,0 +1,552 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl > +# > +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > + > +.globl aesni_multi_cbc_encrypt > +.type aesni_multi_cbc_encrypt,@function > +.align 32 > +aesni_multi_cbc_encrypt: > +.cfi_startproc > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_offset %r15,-56 > + > + > + > + > + > + > + subq $48,%rsp > + andq $-64,%rsp > + movq %rax,16(%rsp) > +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 > + > +.Lenc4x_body: > + movdqu (%rsi),%xmm12 > + leaq 120(%rsi),%rsi > + leaq 80(%rdi),%rdi > + > +.Lenc4x_loop_grande: > + movl %edx,24(%rsp) > + xorl %edx,%edx > + movl -64(%rdi),%ecx > + movq -80(%rdi),%r8 > + cmpl %edx,%ecx > + movq -72(%rdi),%r12 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu -56(%rdi),%xmm2 > + movl %ecx,32(%rsp) > + cmovleq %rsp,%r8 > + movl -24(%rdi),%ecx > + movq -40(%rdi),%r9 > + cmpl %edx,%ecx > + movq -32(%rdi),%r13 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu -16(%rdi),%xmm3 > + movl %ecx,36(%rsp) > + cmovleq %rsp,%r9 > + movl 16(%rdi),%ecx > + movq 0(%rdi),%r10 > + cmpl %edx,%ecx > + movq 8(%rdi),%r14 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu 24(%rdi),%xmm4 > + movl %ecx,40(%rsp) > + cmovleq %rsp,%r10 > + movl 56(%rdi),%ecx > + movq 40(%rdi),%r11 > + cmpl %edx,%ecx > + movq 48(%rdi),%r15 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu 64(%rdi),%xmm5 > + movl %ecx,44(%rsp) > + cmovleq %rsp,%r11 > + testl %edx,%edx > + jz .Lenc4x_done > + > + movups 16-120(%rsi),%xmm1 > + pxor %xmm12,%xmm2 > + movups 32-120(%rsi),%xmm0 > + pxor %xmm12,%xmm3 > + movl 240-120(%rsi),%eax > + pxor %xmm12,%xmm4 > + movdqu (%r8),%xmm6 > + pxor %xmm12,%xmm5 > + movdqu (%r9),%xmm7 > + pxor %xmm6,%xmm2 > + movdqu (%r10),%xmm8 > + pxor %xmm7,%xmm3 > + movdqu (%r11),%xmm9 > + pxor %xmm8,%xmm4 > + pxor %xmm9,%xmm5 > + movdqa 32(%rsp),%xmm10 > + xorq %rbx,%rbx > + jmp .Loop_enc4x > + > +.align 32 > +.Loop_enc4x: > + addq $16,%rbx > + leaq 16(%rsp),%rbp > + movl $1,%ecx > + subq %rbx,%rbp > + > +.byte 102,15,56,220,209 > + prefetcht0 31(%r8,%rbx,1) > + prefetcht0 31(%r9,%rbx,1) > +.byte 102,15,56,220,217 > + prefetcht0 31(%r10,%rbx,1) > + prefetcht0 31(%r10,%rbx,1) > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 48-120(%rsi),%xmm1 > + cmpl 32(%rsp),%ecx > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > + cmovgeq %rbp,%r8 > + cmovgq %rbp,%r12 > +.byte 102,15,56,220,232 > + movups -56(%rsi),%xmm0 > + cmpl 36(%rsp),%ecx > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > + cmovgeq %rbp,%r9 > + cmovgq %rbp,%r13 > +.byte 102,15,56,220,233 > + movups -40(%rsi),%xmm1 > + cmpl 40(%rsp),%ecx > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > + cmovgeq %rbp,%r10 > + cmovgq %rbp,%r14 > +.byte 102,15,56,220,232 > + movups -24(%rsi),%xmm0 > + cmpl 44(%rsp),%ecx > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > + cmovgeq %rbp,%r11 > + cmovgq %rbp,%r15 > +.byte 102,15,56,220,233 > + movups -8(%rsi),%xmm1 > + movdqa %xmm10,%xmm11 > +.byte 102,15,56,220,208 > + prefetcht0 15(%r12,%rbx,1) > + prefetcht0 15(%r13,%rbx,1) > +.byte 102,15,56,220,216 > + prefetcht0 15(%r14,%rbx,1) > + prefetcht0 15(%r15,%rbx,1) > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups 128-120(%rsi),%xmm0 > + pxor %xmm12,%xmm12 > + > +.byte 102,15,56,220,209 > + pcmpgtd %xmm12,%xmm11 > + movdqu -120(%rsi),%xmm12 > +.byte 102,15,56,220,217 > + paddd %xmm11,%xmm10 > + movdqa %xmm10,32(%rsp) > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 144-120(%rsi),%xmm1 > + > + cmpl $11,%eax > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups 160-120(%rsi),%xmm0 > + > + jb .Lenc4x_tail > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 176-120(%rsi),%xmm1 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups 192-120(%rsi),%xmm0 > + > + je .Lenc4x_tail > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 208-120(%rsi),%xmm1 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups 224-120(%rsi),%xmm0 > + jmp .Lenc4x_tail > + > +.align 32 > +.Lenc4x_tail: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movdqu (%r8,%rbx,1),%xmm6 > + movdqu 16-120(%rsi),%xmm1 > + > +.byte 102,15,56,221,208 > + movdqu (%r9,%rbx,1),%xmm7 > + pxor %xmm12,%xmm6 > +.byte 102,15,56,221,216 > + movdqu (%r10,%rbx,1),%xmm8 > + pxor %xmm12,%xmm7 > +.byte 102,15,56,221,224 > + movdqu (%r11,%rbx,1),%xmm9 > + pxor %xmm12,%xmm8 > +.byte 102,15,56,221,232 > + movdqu 32-120(%rsi),%xmm0 > + pxor %xmm12,%xmm9 > + > + movups %xmm2,-16(%r12,%rbx,1) > + pxor %xmm6,%xmm2 > + movups %xmm3,-16(%r13,%rbx,1) > + pxor %xmm7,%xmm3 > + movups %xmm4,-16(%r14,%rbx,1) > + pxor %xmm8,%xmm4 > + movups %xmm5,-16(%r15,%rbx,1) > + pxor %xmm9,%xmm5 > + > + decl %edx > + jnz .Loop_enc4x > + > + movq 16(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movl 24(%rsp),%edx > + > + > + > + > + > + > + > + > + > + > + leaq 160(%rdi),%rdi > + decl %edx > + jnz .Lenc4x_loop_grande > + > +.Lenc4x_done: > + movq -48(%rax),%r15 > +.cfi_restore %r15 > + movq -40(%rax),%r14 > +.cfi_restore %r14 > + movq -32(%rax),%r13 > +.cfi_restore %r13 > + movq -24(%rax),%r12 > +.cfi_restore %r12 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Lenc4x_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt > + > +.globl aesni_multi_cbc_decrypt > +.type aesni_multi_cbc_decrypt,@function > +.align 32 > +aesni_multi_cbc_decrypt: > +.cfi_startproc > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_offset %r15,-56 > + > + > + > + > + > + > + subq $48,%rsp > + andq $-64,%rsp > + movq %rax,16(%rsp) > +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 > + > +.Ldec4x_body: > + movdqu (%rsi),%xmm12 > + leaq 120(%rsi),%rsi > + leaq 80(%rdi),%rdi > + > +.Ldec4x_loop_grande: > + movl %edx,24(%rsp) > + xorl %edx,%edx > + movl -64(%rdi),%ecx > + movq -80(%rdi),%r8 > + cmpl %edx,%ecx > + movq -72(%rdi),%r12 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu -56(%rdi),%xmm6 > + movl %ecx,32(%rsp) > + cmovleq %rsp,%r8 > + movl -24(%rdi),%ecx > + movq -40(%rdi),%r9 > + cmpl %edx,%ecx > + movq -32(%rdi),%r13 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu -16(%rdi),%xmm7 > + movl %ecx,36(%rsp) > + cmovleq %rsp,%r9 > + movl 16(%rdi),%ecx > + movq 0(%rdi),%r10 > + cmpl %edx,%ecx > + movq 8(%rdi),%r14 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu 24(%rdi),%xmm8 > + movl %ecx,40(%rsp) > + cmovleq %rsp,%r10 > + movl 56(%rdi),%ecx > + movq 40(%rdi),%r11 > + cmpl %edx,%ecx > + movq 48(%rdi),%r15 > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movdqu 64(%rdi),%xmm9 > + movl %ecx,44(%rsp) > + cmovleq %rsp,%r11 > + testl %edx,%edx > + jz .Ldec4x_done > + > + movups 16-120(%rsi),%xmm1 > + movups 32-120(%rsi),%xmm0 > + movl 240-120(%rsi),%eax > + movdqu (%r8),%xmm2 > + movdqu (%r9),%xmm3 > + pxor %xmm12,%xmm2 > + movdqu (%r10),%xmm4 > + pxor %xmm12,%xmm3 > + movdqu (%r11),%xmm5 > + pxor %xmm12,%xmm4 > + pxor %xmm12,%xmm5 > + movdqa 32(%rsp),%xmm10 > + xorq %rbx,%rbx > + jmp .Loop_dec4x > + > +.align 32 > +.Loop_dec4x: > + addq $16,%rbx > + leaq 16(%rsp),%rbp > + movl $1,%ecx > + subq %rbx,%rbp > + > +.byte 102,15,56,222,209 > + prefetcht0 31(%r8,%rbx,1) > + prefetcht0 31(%r9,%rbx,1) > +.byte 102,15,56,222,217 > + prefetcht0 31(%r10,%rbx,1) > + prefetcht0 31(%r11,%rbx,1) > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 48-120(%rsi),%xmm1 > + cmpl 32(%rsp),%ecx > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > + cmovgeq %rbp,%r8 > + cmovgq %rbp,%r12 > +.byte 102,15,56,222,232 > + movups -56(%rsi),%xmm0 > + cmpl 36(%rsp),%ecx > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > + cmovgeq %rbp,%r9 > + cmovgq %rbp,%r13 > +.byte 102,15,56,222,233 > + movups -40(%rsi),%xmm1 > + cmpl 40(%rsp),%ecx > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > + cmovgeq %rbp,%r10 > + cmovgq %rbp,%r14 > +.byte 102,15,56,222,232 > + movups -24(%rsi),%xmm0 > + cmpl 44(%rsp),%ecx > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > + cmovgeq %rbp,%r11 > + cmovgq %rbp,%r15 > +.byte 102,15,56,222,233 > + movups -8(%rsi),%xmm1 > + movdqa %xmm10,%xmm11 > +.byte 102,15,56,222,208 > + prefetcht0 15(%r12,%rbx,1) > + prefetcht0 15(%r13,%rbx,1) > +.byte 102,15,56,222,216 > + prefetcht0 15(%r14,%rbx,1) > + prefetcht0 15(%r15,%rbx,1) > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups 128-120(%rsi),%xmm0 > + pxor %xmm12,%xmm12 > + > +.byte 102,15,56,222,209 > + pcmpgtd %xmm12,%xmm11 > + movdqu -120(%rsi),%xmm12 > +.byte 102,15,56,222,217 > + paddd %xmm11,%xmm10 > + movdqa %xmm10,32(%rsp) > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 144-120(%rsi),%xmm1 > + > + cmpl $11,%eax > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups 160-120(%rsi),%xmm0 > + > + jb .Ldec4x_tail > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 176-120(%rsi),%xmm1 > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups 192-120(%rsi),%xmm0 > + > + je .Ldec4x_tail > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 208-120(%rsi),%xmm1 > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups 224-120(%rsi),%xmm0 > + jmp .Ldec4x_tail > + > +.align 32 > +.Ldec4x_tail: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > + pxor %xmm0,%xmm6 > + pxor %xmm0,%xmm7 > +.byte 102,15,56,222,233 > + movdqu 16-120(%rsi),%xmm1 > + pxor %xmm0,%xmm8 > + pxor %xmm0,%xmm9 > + movdqu 32-120(%rsi),%xmm0 > + > +.byte 102,15,56,223,214 > +.byte 102,15,56,223,223 > + movdqu -16(%r8,%rbx,1),%xmm6 > + movdqu -16(%r9,%rbx,1),%xmm7 > +.byte 102,65,15,56,223,224 > +.byte 102,65,15,56,223,233 > + movdqu -16(%r10,%rbx,1),%xmm8 > + movdqu -16(%r11,%rbx,1),%xmm9 > + > + movups %xmm2,-16(%r12,%rbx,1) > + movdqu (%r8,%rbx,1),%xmm2 > + movups %xmm3,-16(%r13,%rbx,1) > + movdqu (%r9,%rbx,1),%xmm3 > + pxor %xmm12,%xmm2 > + movups %xmm4,-16(%r14,%rbx,1) > + movdqu (%r10,%rbx,1),%xmm4 > + pxor %xmm12,%xmm3 > + movups %xmm5,-16(%r15,%rbx,1) > + movdqu (%r11,%rbx,1),%xmm5 > + pxor %xmm12,%xmm4 > + pxor %xmm12,%xmm5 > + > + decl %edx > + jnz .Loop_dec4x > + > + movq 16(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movl 24(%rsp),%edx > + > + leaq 160(%rdi),%rdi > + decl %edx > + jnz .Ldec4x_loop_grande > + > +.Ldec4x_done: > + movq -48(%rax),%r15 > +.cfi_restore %r15 > + movq -40(%rax),%r14 > +.cfi_restore %r14 > + movq -32(%rax),%r13 > +.cfi_restore %r13 > + movq -24(%rax),%r12 > +.cfi_restore %r12 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Ldec4x_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1- > x86_64.S > new file mode 100644 > index 0000000000..ab763a2eec > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S > @@ -0,0 +1,1719 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl > +# > +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl aesni_cbc_sha1_enc > +.type aesni_cbc_sha1_enc,@function > +.align 32 > +aesni_cbc_sha1_enc: > +.cfi_startproc > + > + movl OPENSSL_ia32cap_P+0(%rip),%r10d > + movq OPENSSL_ia32cap_P+4(%rip),%r11 > + btq $61,%r11 > + jc aesni_cbc_sha1_enc_shaext > + jmp aesni_cbc_sha1_enc_ssse3 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc > +.type aesni_cbc_sha1_enc_ssse3,@function > +.align 32 > +aesni_cbc_sha1_enc_ssse3: > +.cfi_startproc > + movq 8(%rsp),%r10 > + > + > + pushq %rbx > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r15,-56 > + leaq -104(%rsp),%rsp > +.cfi_adjust_cfa_offset 104 > + > + > + movq %rdi,%r12 > + movq %rsi,%r13 > + movq %rdx,%r14 > + leaq 112(%rcx),%r15 > + movdqu (%r8),%xmm2 > + movq %r8,88(%rsp) > + shlq $6,%r14 > + subq %r12,%r13 > + movl 240-112(%r15),%r8d > + addq %r10,%r14 > + > + leaq K_XX_XX(%rip),%r11 > + movl 0(%r9),%eax > + movl 4(%r9),%ebx > + movl 8(%r9),%ecx > + movl 12(%r9),%edx > + movl %ebx,%esi > + movl 16(%r9),%ebp > + movl %ecx,%edi > + xorl %edx,%edi > + andl %edi,%esi > + > + movdqa 64(%r11),%xmm3 > + movdqa 0(%r11),%xmm13 > + movdqu 0(%r10),%xmm4 > + movdqu 16(%r10),%xmm5 > + movdqu 32(%r10),%xmm6 > + movdqu 48(%r10),%xmm7 > +.byte 102,15,56,0,227 > +.byte 102,15,56,0,235 > +.byte 102,15,56,0,243 > + addq $64,%r10 > + paddd %xmm13,%xmm4 > +.byte 102,15,56,0,251 > + paddd %xmm13,%xmm5 > + paddd %xmm13,%xmm6 > + movdqa %xmm4,0(%rsp) > + psubd %xmm13,%xmm4 > + movdqa %xmm5,16(%rsp) > + psubd %xmm13,%xmm5 > + movdqa %xmm6,32(%rsp) > + psubd %xmm13,%xmm6 > + movups -112(%r15),%xmm15 > + movups 16-112(%r15),%xmm0 > + jmp .Loop_ssse3 > +.align 32 > +.Loop_ssse3: > + rorl $2,%ebx > + movups 0(%r12),%xmm14 > + xorps %xmm15,%xmm14 > + xorps %xmm14,%xmm2 > + movups -80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + pshufd $238,%xmm4,%xmm8 > + xorl %edx,%esi > + movdqa %xmm7,%xmm12 > + paddd %xmm7,%xmm13 > + movl %eax,%edi > + addl 0(%rsp),%ebp > + punpcklqdq %xmm5,%xmm8 > + xorl %ecx,%ebx > + roll $5,%eax > + addl %esi,%ebp > + psrldq $4,%xmm12 > + andl %ebx,%edi > + xorl %ecx,%ebx > + pxor %xmm4,%xmm8 > + addl %eax,%ebp > + rorl $7,%eax > + pxor %xmm6,%xmm12 > + xorl %ecx,%edi > + movl %ebp,%esi > + addl 4(%rsp),%edx > + pxor %xmm12,%xmm8 > + xorl %ebx,%eax > + roll $5,%ebp > + movdqa %xmm13,48(%rsp) > + addl %edi,%edx > + movups -64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + andl %eax,%esi > + movdqa %xmm8,%xmm3 > + xorl %ebx,%eax > + addl %ebp,%edx > + rorl $7,%ebp > + movdqa %xmm8,%xmm12 > + xorl %ebx,%esi > + pslldq $12,%xmm3 > + paddd %xmm8,%xmm8 > + movl %edx,%edi > + addl 8(%rsp),%ecx > + psrld $31,%xmm12 > + xorl %eax,%ebp > + roll $5,%edx > + addl %esi,%ecx > + movdqa %xmm3,%xmm13 > + andl %ebp,%edi > + xorl %eax,%ebp > + psrld $30,%xmm3 > + addl %edx,%ecx > + rorl $7,%edx > + por %xmm12,%xmm8 > + xorl %eax,%edi > + movl %ecx,%esi > + addl 12(%rsp),%ebx > + movups -48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + pslld $2,%xmm13 > + pxor %xmm3,%xmm8 > + xorl %ebp,%edx > + movdqa 0(%r11),%xmm3 > + roll $5,%ecx > + addl %edi,%ebx > + andl %edx,%esi > + pxor %xmm13,%xmm8 > + xorl %ebp,%edx > + addl %ecx,%ebx > + rorl $7,%ecx > + pshufd $238,%xmm5,%xmm9 > + xorl %ebp,%esi > + movdqa %xmm8,%xmm13 > + paddd %xmm8,%xmm3 > + movl %ebx,%edi > + addl 16(%rsp),%eax > + punpcklqdq %xmm6,%xmm9 > + xorl %edx,%ecx > + roll $5,%ebx > + addl %esi,%eax > + psrldq $4,%xmm13 > + andl %ecx,%edi > + xorl %edx,%ecx > + pxor %xmm5,%xmm9 > + addl %ebx,%eax > + rorl $7,%ebx > + movups -32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + pxor %xmm7,%xmm13 > + xorl %edx,%edi > + movl %eax,%esi > + addl 20(%rsp),%ebp > + pxor %xmm13,%xmm9 > + xorl %ecx,%ebx > + roll $5,%eax > + movdqa %xmm3,0(%rsp) > + addl %edi,%ebp > + andl %ebx,%esi > + movdqa %xmm9,%xmm12 > + xorl %ecx,%ebx > + addl %eax,%ebp > + rorl $7,%eax > + movdqa %xmm9,%xmm13 > + xorl %ecx,%esi > + pslldq $12,%xmm12 > + paddd %xmm9,%xmm9 > + movl %ebp,%edi > + addl 24(%rsp),%edx > + psrld $31,%xmm13 > + xorl %ebx,%eax > + roll $5,%ebp > + addl %esi,%edx > + movups -16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm12,%xmm3 > + andl %eax,%edi > + xorl %ebx,%eax > + psrld $30,%xmm12 > + addl %ebp,%edx > + rorl $7,%ebp > + por %xmm13,%xmm9 > + xorl %ebx,%edi > + movl %edx,%esi > + addl 28(%rsp),%ecx > + pslld $2,%xmm3 > + pxor %xmm12,%xmm9 > + xorl %eax,%ebp > + movdqa 16(%r11),%xmm12 > + roll $5,%edx > + addl %edi,%ecx > + andl %ebp,%esi > + pxor %xmm3,%xmm9 > + xorl %eax,%ebp > + addl %edx,%ecx > + rorl $7,%edx > + pshufd $238,%xmm6,%xmm10 > + xorl %eax,%esi > + movdqa %xmm9,%xmm3 > + paddd %xmm9,%xmm12 > + movl %ecx,%edi > + addl 32(%rsp),%ebx > + movups 0(%r15),%xmm0 > +.byte 102,15,56,220,209 > + punpcklqdq %xmm7,%xmm10 > + xorl %ebp,%edx > + roll $5,%ecx > + addl %esi,%ebx > + psrldq $4,%xmm3 > + andl %edx,%edi > + xorl %ebp,%edx > + pxor %xmm6,%xmm10 > + addl %ecx,%ebx > + rorl $7,%ecx > + pxor %xmm8,%xmm3 > + xorl %ebp,%edi > + movl %ebx,%esi > + addl 36(%rsp),%eax > + pxor %xmm3,%xmm10 > + xorl %edx,%ecx > + roll $5,%ebx > + movdqa %xmm12,16(%rsp) > + addl %edi,%eax > + andl %ecx,%esi > + movdqa %xmm10,%xmm13 > + xorl %edx,%ecx > + addl %ebx,%eax > + rorl $7,%ebx > + movups 16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm10,%xmm3 > + xorl %edx,%esi > + pslldq $12,%xmm13 > + paddd %xmm10,%xmm10 > + movl %eax,%edi > + addl 40(%rsp),%ebp > + psrld $31,%xmm3 > + xorl %ecx,%ebx > + roll $5,%eax > + addl %esi,%ebp > + movdqa %xmm13,%xmm12 > + andl %ebx,%edi > + xorl %ecx,%ebx > + psrld $30,%xmm13 > + addl %eax,%ebp > + rorl $7,%eax > + por %xmm3,%xmm10 > + xorl %ecx,%edi > + movl %ebp,%esi > + addl 44(%rsp),%edx > + pslld $2,%xmm12 > + pxor %xmm13,%xmm10 > + xorl %ebx,%eax > + movdqa 16(%r11),%xmm13 > + roll $5,%ebp > + addl %edi,%edx > + movups 32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + andl %eax,%esi > + pxor %xmm12,%xmm10 > + xorl %ebx,%eax > + addl %ebp,%edx > + rorl $7,%ebp > + pshufd $238,%xmm7,%xmm11 > + xorl %ebx,%esi > + movdqa %xmm10,%xmm12 > + paddd %xmm10,%xmm13 > + movl %edx,%edi > + addl 48(%rsp),%ecx > + punpcklqdq %xmm8,%xmm11 > + xorl %eax,%ebp > + roll $5,%edx > + addl %esi,%ecx > + psrldq $4,%xmm12 > + andl %ebp,%edi > + xorl %eax,%ebp > + pxor %xmm7,%xmm11 > + addl %edx,%ecx > + rorl $7,%edx > + pxor %xmm9,%xmm12 > + xorl %eax,%edi > + movl %ecx,%esi > + addl 52(%rsp),%ebx > + movups 48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + pxor %xmm12,%xmm11 > + xorl %ebp,%edx > + roll $5,%ecx > + movdqa %xmm13,32(%rsp) > + addl %edi,%ebx > + andl %edx,%esi > + movdqa %xmm11,%xmm3 > + xorl %ebp,%edx > + addl %ecx,%ebx > + rorl $7,%ecx > + movdqa %xmm11,%xmm12 > + xorl %ebp,%esi > + pslldq $12,%xmm3 > + paddd %xmm11,%xmm11 > + movl %ebx,%edi > + addl 56(%rsp),%eax > + psrld $31,%xmm12 > + xorl %edx,%ecx > + roll $5,%ebx > + addl %esi,%eax > + movdqa %xmm3,%xmm13 > + andl %ecx,%edi > + xorl %edx,%ecx > + psrld $30,%xmm3 > + addl %ebx,%eax > + rorl $7,%ebx > + cmpl $11,%r8d > + jb .Laesenclast1 > + movups 64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast1 > + movups 96(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%r15),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast1: > +.byte 102,15,56,221,209 > + movups 16-112(%r15),%xmm0 > + por %xmm12,%xmm11 > + xorl %edx,%edi > + movl %eax,%esi > + addl 60(%rsp),%ebp > + pslld $2,%xmm13 > + pxor %xmm3,%xmm11 > + xorl %ecx,%ebx > + movdqa 16(%r11),%xmm3 > + roll $5,%eax > + addl %edi,%ebp > + andl %ebx,%esi > + pxor %xmm13,%xmm11 > + pshufd $238,%xmm10,%xmm13 > + xorl %ecx,%ebx > + addl %eax,%ebp > + rorl $7,%eax > + pxor %xmm8,%xmm4 > + xorl %ecx,%esi > + movl %ebp,%edi > + addl 0(%rsp),%edx > + punpcklqdq %xmm11,%xmm13 > + xorl %ebx,%eax > + roll $5,%ebp > + pxor %xmm5,%xmm4 > + addl %esi,%edx > + movups 16(%r12),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,0(%r12,%r13,1) > + xorps %xmm14,%xmm2 > + movups -80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + andl %eax,%edi > + movdqa %xmm3,%xmm12 > + xorl %ebx,%eax > + paddd %xmm11,%xmm3 > + addl %ebp,%edx > + pxor %xmm13,%xmm4 > + rorl $7,%ebp > + xorl %ebx,%edi > + movl %edx,%esi > + addl 4(%rsp),%ecx > + movdqa %xmm4,%xmm13 > + xorl %eax,%ebp > + roll $5,%edx > + movdqa %xmm3,48(%rsp) > + addl %edi,%ecx > + andl %ebp,%esi > + xorl %eax,%ebp > + pslld $2,%xmm4 > + addl %edx,%ecx > + rorl $7,%edx > + psrld $30,%xmm13 > + xorl %eax,%esi > + movl %ecx,%edi > + addl 8(%rsp),%ebx > + movups -64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + por %xmm13,%xmm4 > + xorl %ebp,%edx > + roll $5,%ecx > + pshufd $238,%xmm11,%xmm3 > + addl %esi,%ebx > + andl %edx,%edi > + xorl %ebp,%edx > + addl %ecx,%ebx > + addl 12(%rsp),%eax > + xorl %ebp,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + addl %ebx,%eax > + pxor %xmm9,%xmm5 > + addl 16(%rsp),%ebp > + movups -48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%esi > + punpcklqdq %xmm4,%xmm3 > + movl %eax,%edi > + roll $5,%eax > + pxor %xmm6,%xmm5 > + addl %esi,%ebp > + xorl %ecx,%edi > + movdqa %xmm12,%xmm13 > + rorl $7,%ebx > + paddd %xmm4,%xmm12 > + addl %eax,%ebp > + pxor %xmm3,%xmm5 > + addl 20(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + movdqa %xmm5,%xmm3 > + addl %edi,%edx > + xorl %ebx,%esi > + movdqa %xmm12,0(%rsp) > + rorl $7,%eax > + addl %ebp,%edx > + addl 24(%rsp),%ecx > + pslld $2,%xmm5 > + xorl %eax,%esi > + movl %edx,%edi > + psrld $30,%xmm3 > + roll $5,%edx > + addl %esi,%ecx > + movups -32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%edi > + rorl $7,%ebp > + por %xmm3,%xmm5 > + addl %edx,%ecx > + addl 28(%rsp),%ebx > + pshufd $238,%xmm4,%xmm12 > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + pxor %xmm10,%xmm6 > + addl 32(%rsp),%eax > + xorl %edx,%esi > + punpcklqdq %xmm5,%xmm12 > + movl %ebx,%edi > + roll $5,%ebx > + pxor %xmm7,%xmm6 > + addl %esi,%eax > + xorl %edx,%edi > + movdqa 32(%r11),%xmm3 > + rorl $7,%ecx > + paddd %xmm5,%xmm13 > + addl %ebx,%eax > + pxor %xmm12,%xmm6 > + addl 36(%rsp),%ebp > + movups -16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + movdqa %xmm6,%xmm12 > + addl %edi,%ebp > + xorl %ecx,%esi > + movdqa %xmm13,16(%rsp) > + rorl $7,%ebx > + addl %eax,%ebp > + addl 40(%rsp),%edx > + pslld $2,%xmm6 > + xorl %ebx,%esi > + movl %ebp,%edi > + psrld $30,%xmm12 > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + por %xmm12,%xmm6 > + addl %ebp,%edx > + addl 44(%rsp),%ecx > + pshufd $238,%xmm5,%xmm13 > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + movups 0(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + pxor %xmm11,%xmm7 > + addl 48(%rsp),%ebx > + xorl %ebp,%esi > + punpcklqdq %xmm6,%xmm13 > + movl %ecx,%edi > + roll $5,%ecx > + pxor %xmm8,%xmm7 > + addl %esi,%ebx > + xorl %ebp,%edi > + movdqa %xmm3,%xmm12 > + rorl $7,%edx > + paddd %xmm6,%xmm3 > + addl %ecx,%ebx > + pxor %xmm13,%xmm7 > + addl 52(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + movdqa %xmm7,%xmm13 > + addl %edi,%eax > + xorl %edx,%esi > + movdqa %xmm3,32(%rsp) > + rorl $7,%ecx > + addl %ebx,%eax > + addl 56(%rsp),%ebp > + movups 16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + pslld $2,%xmm7 > + xorl %ecx,%esi > + movl %eax,%edi > + psrld $30,%xmm13 > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + por %xmm13,%xmm7 > + addl %eax,%ebp > + addl 60(%rsp),%edx > + pshufd $238,%xmm6,%xmm3 > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + pxor %xmm4,%xmm8 > + addl 0(%rsp),%ecx > + xorl %eax,%esi > + punpcklqdq %xmm7,%xmm3 > + movl %edx,%edi > + roll $5,%edx > + pxor %xmm9,%xmm8 > + addl %esi,%ecx > + movups 32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%edi > + movdqa %xmm12,%xmm13 > + rorl $7,%ebp > + paddd %xmm7,%xmm12 > + addl %edx,%ecx > + pxor %xmm3,%xmm8 > + addl 4(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + movdqa %xmm8,%xmm3 > + addl %edi,%ebx > + xorl %ebp,%esi > + movdqa %xmm12,48(%rsp) > + rorl $7,%edx > + addl %ecx,%ebx > + addl 8(%rsp),%eax > + pslld $2,%xmm8 > + xorl %edx,%esi > + movl %ebx,%edi > + psrld $30,%xmm3 > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + por %xmm3,%xmm8 > + addl %ebx,%eax > + addl 12(%rsp),%ebp > + movups 48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + pshufd $238,%xmm7,%xmm12 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + pxor %xmm5,%xmm9 > + addl 16(%rsp),%edx > + xorl %ebx,%esi > + punpcklqdq %xmm8,%xmm12 > + movl %ebp,%edi > + roll $5,%ebp > + pxor %xmm10,%xmm9 > + addl %esi,%edx > + xorl %ebx,%edi > + movdqa %xmm13,%xmm3 > + rorl $7,%eax > + paddd %xmm8,%xmm13 > + addl %ebp,%edx > + pxor %xmm12,%xmm9 > + addl 20(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + movdqa %xmm9,%xmm12 > + addl %edi,%ecx > + cmpl $11,%r8d > + jb .Laesenclast2 > + movups 64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast2 > + movups 96(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%r15),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast2: > +.byte 102,15,56,221,209 > + movups 16-112(%r15),%xmm0 > + xorl %eax,%esi > + movdqa %xmm13,0(%rsp) > + rorl $7,%ebp > + addl %edx,%ecx > + addl 24(%rsp),%ebx > + pslld $2,%xmm9 > + xorl %ebp,%esi > + movl %ecx,%edi > + psrld $30,%xmm12 > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + por %xmm12,%xmm9 > + addl %ecx,%ebx > + addl 28(%rsp),%eax > + pshufd $238,%xmm8,%xmm13 > + rorl $7,%ecx > + movl %ebx,%esi > + xorl %edx,%edi > + roll $5,%ebx > + addl %edi,%eax > + xorl %ecx,%esi > + xorl %edx,%ecx > + addl %ebx,%eax > + pxor %xmm6,%xmm10 > + addl 32(%rsp),%ebp > + movups 32(%r12),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,16(%r13,%r12,1) > + xorps %xmm14,%xmm2 > + movups -80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + andl %ecx,%esi > + xorl %edx,%ecx > + rorl $7,%ebx > + punpcklqdq %xmm9,%xmm13 > + movl %eax,%edi > + xorl %ecx,%esi > + pxor %xmm11,%xmm10 > + roll $5,%eax > + addl %esi,%ebp > + movdqa %xmm3,%xmm12 > + xorl %ebx,%edi > + paddd %xmm9,%xmm3 > + xorl %ecx,%ebx > + pxor %xmm13,%xmm10 > + addl %eax,%ebp > + addl 36(%rsp),%edx > + andl %ebx,%edi > + xorl %ecx,%ebx > + rorl $7,%eax > + movdqa %xmm10,%xmm13 > + movl %ebp,%esi > + xorl %ebx,%edi > + movdqa %xmm3,16(%rsp) > + roll $5,%ebp > + addl %edi,%edx > + movups -64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%esi > + pslld $2,%xmm10 > + xorl %ebx,%eax > + addl %ebp,%edx > + psrld $30,%xmm13 > + addl 40(%rsp),%ecx > + andl %eax,%esi > + xorl %ebx,%eax > + por %xmm13,%xmm10 > + rorl $7,%ebp > + movl %edx,%edi > + xorl %eax,%esi > + roll $5,%edx > + pshufd $238,%xmm9,%xmm3 > + addl %esi,%ecx > + xorl %ebp,%edi > + xorl %eax,%ebp > + addl %edx,%ecx > + addl 44(%rsp),%ebx > + andl %ebp,%edi > + xorl %eax,%ebp > + rorl $7,%edx > + movups -48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + movl %ecx,%esi > + xorl %ebp,%edi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %edx,%esi > + xorl %ebp,%edx > + addl %ecx,%ebx > + pxor %xmm7,%xmm11 > + addl 48(%rsp),%eax > + andl %edx,%esi > + xorl %ebp,%edx > + rorl $7,%ecx > + punpcklqdq %xmm10,%xmm3 > + movl %ebx,%edi > + xorl %edx,%esi > + pxor %xmm4,%xmm11 > + roll $5,%ebx > + addl %esi,%eax > + movdqa 48(%r11),%xmm13 > + xorl %ecx,%edi > + paddd %xmm10,%xmm12 > + xorl %edx,%ecx > + pxor %xmm3,%xmm11 > + addl %ebx,%eax > + addl 52(%rsp),%ebp > + movups -32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + andl %ecx,%edi > + xorl %edx,%ecx > + rorl $7,%ebx > + movdqa %xmm11,%xmm3 > + movl %eax,%esi > + xorl %ecx,%edi > + movdqa %xmm12,32(%rsp) > + roll $5,%eax > + addl %edi,%ebp > + xorl %ebx,%esi > + pslld $2,%xmm11 > + xorl %ecx,%ebx > + addl %eax,%ebp > + psrld $30,%xmm3 > + addl 56(%rsp),%edx > + andl %ebx,%esi > + xorl %ecx,%ebx > + por %xmm3,%xmm11 > + rorl $7,%eax > + movl %ebp,%edi > + xorl %ebx,%esi > + roll $5,%ebp > + pshufd $238,%xmm10,%xmm12 > + addl %esi,%edx > + movups -16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %eax,%edi > + xorl %ebx,%eax > + addl %ebp,%edx > + addl 60(%rsp),%ecx > + andl %eax,%edi > + xorl %ebx,%eax > + rorl $7,%ebp > + movl %edx,%esi > + xorl %eax,%edi > + roll $5,%edx > + addl %edi,%ecx > + xorl %ebp,%esi > + xorl %eax,%ebp > + addl %edx,%ecx > + pxor %xmm8,%xmm4 > + addl 0(%rsp),%ebx > + andl %ebp,%esi > + xorl %eax,%ebp > + rorl $7,%edx > + movups 0(%r15),%xmm0 > +.byte 102,15,56,220,209 > + punpcklqdq %xmm11,%xmm12 > + movl %ecx,%edi > + xorl %ebp,%esi > + pxor %xmm5,%xmm4 > + roll $5,%ecx > + addl %esi,%ebx > + movdqa %xmm13,%xmm3 > + xorl %edx,%edi > + paddd %xmm11,%xmm13 > + xorl %ebp,%edx > + pxor %xmm12,%xmm4 > + addl %ecx,%ebx > + addl 4(%rsp),%eax > + andl %edx,%edi > + xorl %ebp,%edx > + rorl $7,%ecx > + movdqa %xmm4,%xmm12 > + movl %ebx,%esi > + xorl %edx,%edi > + movdqa %xmm13,48(%rsp) > + roll $5,%ebx > + addl %edi,%eax > + xorl %ecx,%esi > + pslld $2,%xmm4 > + xorl %edx,%ecx > + addl %ebx,%eax > + psrld $30,%xmm12 > + addl 8(%rsp),%ebp > + movups 16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + andl %ecx,%esi > + xorl %edx,%ecx > + por %xmm12,%xmm4 > + rorl $7,%ebx > + movl %eax,%edi > + xorl %ecx,%esi > + roll $5,%eax > + pshufd $238,%xmm11,%xmm13 > + addl %esi,%ebp > + xorl %ebx,%edi > + xorl %ecx,%ebx > + addl %eax,%ebp > + addl 12(%rsp),%edx > + andl %ebx,%edi > + xorl %ecx,%ebx > + rorl $7,%eax > + movl %ebp,%esi > + xorl %ebx,%edi > + roll $5,%ebp > + addl %edi,%edx > + movups 32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%esi > + xorl %ebx,%eax > + addl %ebp,%edx > + pxor %xmm9,%xmm5 > + addl 16(%rsp),%ecx > + andl %eax,%esi > + xorl %ebx,%eax > + rorl $7,%ebp > + punpcklqdq %xmm4,%xmm13 > + movl %edx,%edi > + xorl %eax,%esi > + pxor %xmm6,%xmm5 > + roll $5,%edx > + addl %esi,%ecx > + movdqa %xmm3,%xmm12 > + xorl %ebp,%edi > + paddd %xmm4,%xmm3 > + xorl %eax,%ebp > + pxor %xmm13,%xmm5 > + addl %edx,%ecx > + addl 20(%rsp),%ebx > + andl %ebp,%edi > + xorl %eax,%ebp > + rorl $7,%edx > + movups 48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm5,%xmm13 > + movl %ecx,%esi > + xorl %ebp,%edi > + movdqa %xmm3,0(%rsp) > + roll $5,%ecx > + addl %edi,%ebx > + xorl %edx,%esi > + pslld $2,%xmm5 > + xorl %ebp,%edx > + addl %ecx,%ebx > + psrld $30,%xmm13 > + addl 24(%rsp),%eax > + andl %edx,%esi > + xorl %ebp,%edx > + por %xmm13,%xmm5 > + rorl $7,%ecx > + movl %ebx,%edi > + xorl %edx,%esi > + roll $5,%ebx > + pshufd $238,%xmm4,%xmm3 > + addl %esi,%eax > + xorl %ecx,%edi > + xorl %edx,%ecx > + addl %ebx,%eax > + addl 28(%rsp),%ebp > + cmpl $11,%r8d > + jb .Laesenclast3 > + movups 64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast3 > + movups 96(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%r15),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast3: > +.byte 102,15,56,221,209 > + movups 16-112(%r15),%xmm0 > + andl %ecx,%edi > + xorl %edx,%ecx > + rorl $7,%ebx > + movl %eax,%esi > + xorl %ecx,%edi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ebx,%esi > + xorl %ecx,%ebx > + addl %eax,%ebp > + pxor %xmm10,%xmm6 > + addl 32(%rsp),%edx > + andl %ebx,%esi > + xorl %ecx,%ebx > + rorl $7,%eax > + punpcklqdq %xmm5,%xmm3 > + movl %ebp,%edi > + xorl %ebx,%esi > + pxor %xmm7,%xmm6 > + roll $5,%ebp > + addl %esi,%edx > + movups 48(%r12),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,32(%r13,%r12,1) > + xorps %xmm14,%xmm2 > + movups -80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm12,%xmm13 > + xorl %eax,%edi > + paddd %xmm5,%xmm12 > + xorl %ebx,%eax > + pxor %xmm3,%xmm6 > + addl %ebp,%edx > + addl 36(%rsp),%ecx > + andl %eax,%edi > + xorl %ebx,%eax > + rorl $7,%ebp > + movdqa %xmm6,%xmm3 > + movl %edx,%esi > + xorl %eax,%edi > + movdqa %xmm12,16(%rsp) > + roll $5,%edx > + addl %edi,%ecx > + xorl %ebp,%esi > + pslld $2,%xmm6 > + xorl %eax,%ebp > + addl %edx,%ecx > + psrld $30,%xmm3 > + addl 40(%rsp),%ebx > + andl %ebp,%esi > + xorl %eax,%ebp > + por %xmm3,%xmm6 > + rorl $7,%edx > + movups -64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movl %ecx,%edi > + xorl %ebp,%esi > + roll $5,%ecx > + pshufd $238,%xmm5,%xmm12 > + addl %esi,%ebx > + xorl %edx,%edi > + xorl %ebp,%edx > + addl %ecx,%ebx > + addl 44(%rsp),%eax > + andl %edx,%edi > + xorl %ebp,%edx > + rorl $7,%ecx > + movl %ebx,%esi > + xorl %edx,%edi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + addl %ebx,%eax > + pxor %xmm11,%xmm7 > + addl 48(%rsp),%ebp > + movups -48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%esi > + punpcklqdq %xmm6,%xmm12 > + movl %eax,%edi > + roll $5,%eax > + pxor %xmm8,%xmm7 > + addl %esi,%ebp > + xorl %ecx,%edi > + movdqa %xmm13,%xmm3 > + rorl $7,%ebx > + paddd %xmm6,%xmm13 > + addl %eax,%ebp > + pxor %xmm12,%xmm7 > + addl 52(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + movdqa %xmm7,%xmm12 > + addl %edi,%edx > + xorl %ebx,%esi > + movdqa %xmm13,32(%rsp) > + rorl $7,%eax > + addl %ebp,%edx > + addl 56(%rsp),%ecx > + pslld $2,%xmm7 > + xorl %eax,%esi > + movl %edx,%edi > + psrld $30,%xmm12 > + roll $5,%edx > + addl %esi,%ecx > + movups -32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%edi > + rorl $7,%ebp > + por %xmm12,%xmm7 > + addl %edx,%ecx > + addl 60(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 0(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + paddd %xmm7,%xmm3 > + addl %esi,%eax > + xorl %edx,%edi > + movdqa %xmm3,48(%rsp) > + rorl $7,%ecx > + addl %ebx,%eax > + addl 4(%rsp),%ebp > + movups -16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 8(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + addl %ebp,%edx > + addl 12(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + movups 0(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + cmpq %r14,%r10 > + je .Ldone_ssse3 > + movdqa 64(%r11),%xmm3 > + movdqa 0(%r11),%xmm13 > + movdqu 0(%r10),%xmm4 > + movdqu 16(%r10),%xmm5 > + movdqu 32(%r10),%xmm6 > + movdqu 48(%r10),%xmm7 > +.byte 102,15,56,0,227 > + addq $64,%r10 > + addl 16(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > +.byte 102,15,56,0,235 > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + paddd %xmm13,%xmm4 > + addl %ecx,%ebx > + addl 20(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + movdqa %xmm4,0(%rsp) > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + psubd %xmm13,%xmm4 > + addl %ebx,%eax > + addl 24(%rsp),%ebp > + movups 16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%esi > + movl %eax,%edi > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 28(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + addl 32(%rsp),%ecx > + xorl %eax,%esi > + movl %edx,%edi > +.byte 102,15,56,0,243 > + roll $5,%edx > + addl %esi,%ecx > + movups 32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%edi > + rorl $7,%ebp > + paddd %xmm13,%xmm5 > + addl %edx,%ecx > + addl 36(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + movdqa %xmm5,16(%rsp) > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + psubd %xmm13,%xmm5 > + addl %ecx,%ebx > + addl 40(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 44(%rsp),%ebp > + movups 48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 48(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > +.byte 102,15,56,0,251 > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + paddd %xmm13,%xmm6 > + addl %ebp,%edx > + addl 52(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + movdqa %xmm6,32(%rsp) > + roll $5,%edx > + addl %edi,%ecx > + cmpl $11,%r8d > + jb .Laesenclast4 > + movups 64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast4 > + movups 96(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%r15),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast4: > +.byte 102,15,56,221,209 > + movups 16-112(%r15),%xmm0 > + xorl %eax,%esi > + rorl $7,%ebp > + psubd %xmm13,%xmm6 > + addl %edx,%ecx > + addl 56(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 60(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + rorl $7,%ecx > + addl %ebx,%eax > + movups %xmm2,48(%r13,%r12,1) > + leaq 64(%r12),%r12 > + > + addl 0(%r9),%eax > + addl 4(%r9),%esi > + addl 8(%r9),%ecx > + addl 12(%r9),%edx > + movl %eax,0(%r9) > + addl 16(%r9),%ebp > + movl %esi,4(%r9) > + movl %esi,%ebx > + movl %ecx,8(%r9) > + movl %ecx,%edi > + movl %edx,12(%r9) > + xorl %edx,%edi > + movl %ebp,16(%r9) > + andl %edi,%esi > + jmp .Loop_ssse3 > + > +.Ldone_ssse3: > + addl 16(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 20(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 24(%rsp),%ebp > + movups 16(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%esi > + movl %eax,%edi > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 28(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + addl 32(%rsp),%ecx > + xorl %eax,%esi > + movl %edx,%edi > + roll $5,%edx > + addl %esi,%ecx > + movups 32(%r15),%xmm0 > +.byte 102,15,56,220,209 > + xorl %eax,%edi > + rorl $7,%ebp > + addl %edx,%ecx > + addl 36(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 40(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 44(%rsp),%ebp > + movups 48(%r15),%xmm1 > +.byte 102,15,56,220,208 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 48(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + addl %ebp,%edx > + addl 52(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + cmpl $11,%r8d > + jb .Laesenclast5 > + movups 64(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%r15),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast5 > + movups 96(%r15),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%r15),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast5: > +.byte 102,15,56,221,209 > + movups 16-112(%r15),%xmm0 > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + addl 56(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 60(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + rorl $7,%ecx > + addl %ebx,%eax > + movups %xmm2,48(%r13,%r12,1) > + movq 88(%rsp),%r8 > + > + addl 0(%r9),%eax > + addl 4(%r9),%esi > + addl 8(%r9),%ecx > + movl %eax,0(%r9) > + addl 12(%r9),%edx > + movl %esi,4(%r9) > + addl 16(%r9),%ebp > + movl %ecx,8(%r9) > + movl %edx,12(%r9) > + movl %ebp,16(%r9) > + movups %xmm2,(%r8) > + leaq 104(%rsp),%rsi > +.cfi_def_cfa %rsi,56 > + movq 0(%rsi),%r15 > +.cfi_restore %r15 > + movq 8(%rsi),%r14 > +.cfi_restore %r14 > + movq 16(%rsi),%r13 > +.cfi_restore %r13 > + movq 24(%rsi),%r12 > +.cfi_restore %r12 > + movq 32(%rsi),%rbp > +.cfi_restore %rbp > + movq 40(%rsi),%rbx > +.cfi_restore %rbx > + leaq 48(%rsi),%rsp > +.cfi_def_cfa %rsp,8 > +.Lepilogue_ssse3: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3 > +.align 64 > +K_XX_XX: > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > + > +.byte > 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,10= 2, > 111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,1= 21, > 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62= , > 0 > +.align 64 > +.type aesni_cbc_sha1_enc_shaext,@function > +.align 32 > +aesni_cbc_sha1_enc_shaext: > +.cfi_startproc > + movq 8(%rsp),%r10 > + movdqu (%r9),%xmm8 > + movd 16(%r9),%xmm9 > + movdqa K_XX_XX+80(%rip),%xmm7 > + > + movl 240(%rcx),%r11d > + subq %rdi,%rsi > + movups (%rcx),%xmm15 > + movups (%r8),%xmm2 > + movups 16(%rcx),%xmm0 > + leaq 112(%rcx),%rcx > + > + pshufd $27,%xmm8,%xmm8 > + pshufd $27,%xmm9,%xmm9 > + jmp .Loop_shaext > + > +.align 16 > +.Loop_shaext: > + movups 0(%rdi),%xmm14 > + xorps %xmm15,%xmm14 > + xorps %xmm14,%xmm2 > + movups -80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + movdqu (%r10),%xmm3 > + movdqa %xmm9,%xmm12 > +.byte 102,15,56,0,223 > + movdqu 16(%r10),%xmm4 > + movdqa %xmm8,%xmm11 > + movups -64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > +.byte 102,15,56,0,231 > + > + paddd %xmm3,%xmm9 > + movdqu 32(%r10),%xmm5 > + leaq 64(%r10),%r10 > + pxor %xmm12,%xmm3 > + movups -48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + pxor %xmm12,%xmm3 > + movdqa %xmm8,%xmm10 > +.byte 102,15,56,0,239 > +.byte 69,15,58,204,193,0 > +.byte 68,15,56,200,212 > + movups -32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > +.byte 15,56,201,220 > + movdqu -16(%r10),%xmm6 > + movdqa %xmm8,%xmm9 > +.byte 102,15,56,0,247 > + movups -16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 69,15,58,204,194,0 > +.byte 68,15,56,200,205 > + pxor %xmm5,%xmm3 > +.byte 15,56,201,229 > + movups 0(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,0 > +.byte 68,15,56,200,214 > + movups 16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,222 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + movups 32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,0 > +.byte 68,15,56,200,203 > + movups 48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,227 > + pxor %xmm3,%xmm5 > +.byte 15,56,201,243 > + cmpl $11,%r11d > + jb .Laesenclast6 > + movups 64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast6 > + movups 96(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast6: > +.byte 102,15,56,221,209 > + movups 16-112(%rcx),%xmm0 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,0 > +.byte 68,15,56,200,212 > + movups 16(%rdi),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,0(%rsi,%rdi,1) > + xorps %xmm14,%xmm2 > + movups -80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,236 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,220 > + movups -64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,1 > +.byte 68,15,56,200,205 > + movups -48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,245 > + pxor %xmm5,%xmm3 > +.byte 15,56,201,229 > + movups -32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,1 > +.byte 68,15,56,200,214 > + movups -16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,222 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + movups 0(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,1 > +.byte 68,15,56,200,203 > + movups 16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,227 > + pxor %xmm3,%xmm5 > +.byte 15,56,201,243 > + movups 32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,1 > +.byte 68,15,56,200,212 > + movups 48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,236 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,220 > + cmpl $11,%r11d > + jb .Laesenclast7 > + movups 64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast7 > + movups 96(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast7: > +.byte 102,15,56,221,209 > + movups 16-112(%rcx),%xmm0 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,1 > +.byte 68,15,56,200,205 > + movups 32(%rdi),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,16(%rsi,%rdi,1) > + xorps %xmm14,%xmm2 > + movups -80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,245 > + pxor %xmm5,%xmm3 > +.byte 15,56,201,229 > + movups -64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,2 > +.byte 68,15,56,200,214 > + movups -48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,222 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + movups -32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,2 > +.byte 68,15,56,200,203 > + movups -16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,227 > + pxor %xmm3,%xmm5 > +.byte 15,56,201,243 > + movups 0(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,2 > +.byte 68,15,56,200,212 > + movups 16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,236 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,220 > + movups 32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,2 > +.byte 68,15,56,200,205 > + movups 48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,245 > + pxor %xmm5,%xmm3 > +.byte 15,56,201,229 > + cmpl $11,%r11d > + jb .Laesenclast8 > + movups 64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast8 > + movups 96(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast8: > +.byte 102,15,56,221,209 > + movups 16-112(%rcx),%xmm0 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,2 > +.byte 68,15,56,200,214 > + movups 48(%rdi),%xmm14 > + xorps %xmm15,%xmm14 > + movups %xmm2,32(%rsi,%rdi,1) > + xorps %xmm14,%xmm2 > + movups -80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,222 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + movups -64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,3 > +.byte 68,15,56,200,203 > + movups -48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.byte 15,56,202,227 > + pxor %xmm3,%xmm5 > +.byte 15,56,201,243 > + movups -32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,3 > +.byte 68,15,56,200,212 > +.byte 15,56,202,236 > + pxor %xmm4,%xmm6 > + movups -16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,3 > +.byte 68,15,56,200,205 > +.byte 15,56,202,245 > + movups 0(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movdqa %xmm12,%xmm5 > + movdqa %xmm8,%xmm10 > +.byte 69,15,58,204,193,3 > +.byte 68,15,56,200,214 > + movups 16(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + movdqa %xmm8,%xmm9 > +.byte 69,15,58,204,194,3 > +.byte 68,15,56,200,205 > + movups 32(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 48(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + cmpl $11,%r11d > + jb .Laesenclast9 > + movups 64(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 80(%rcx),%xmm1 > +.byte 102,15,56,220,208 > + je .Laesenclast9 > + movups 96(%rcx),%xmm0 > +.byte 102,15,56,220,209 > + movups 112(%rcx),%xmm1 > +.byte 102,15,56,220,208 > +.Laesenclast9: > +.byte 102,15,56,221,209 > + movups 16-112(%rcx),%xmm0 > + decq %rdx > + > + paddd %xmm11,%xmm8 > + movups %xmm2,48(%rsi,%rdi,1) > + leaq 64(%rdi),%rdi > + jnz .Loop_shaext > + > + pshufd $27,%xmm8,%xmm8 > + pshufd $27,%xmm9,%xmm9 > + movups %xmm2,(%r8) > + movdqu %xmm8,(%r9) > + movd %xmm9,16(%r9) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256- > x86_64.S > new file mode 100644 > index 0000000000..e257169287 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.= S > @@ -0,0 +1,69 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl > +# > +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl aesni_cbc_sha256_enc > +.type aesni_cbc_sha256_enc,@function > +.align 16 > +aesni_cbc_sha256_enc: > +.cfi_startproc > + xorl %eax,%eax > + cmpq $0,%rdi > + je .Lprobe > + ud2 > +.Lprobe: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc > + > +.align 64 > +.type K256,@object > +K256: > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1 > +.long 0,0,0,0, 0,0,0,0 > +.byte > 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104= ,3 > 2,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,3= 2,9 > 8,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,= 1 > 03,62,0 > +.align 64 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.= S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S > new file mode 100644 > index 0000000000..2bdb5cf251 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S > @@ -0,0 +1,4484 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/aes/asm/aesni-x86_64.pl > +# > +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > +.globl aesni_encrypt > +.type aesni_encrypt,@function > +.align 16 > +aesni_encrypt: > +.cfi_startproc > + movups (%rdi),%xmm2 > + movl 240(%rdx),%eax > + movups (%rdx),%xmm0 > + movups 16(%rdx),%xmm1 > + leaq 32(%rdx),%rdx > + xorps %xmm0,%xmm2 > +.Loop_enc1_1: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rdx),%xmm1 > + leaq 16(%rdx),%rdx > + jnz .Loop_enc1_1 > +.byte 102,15,56,221,209 > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_encrypt,.-aesni_encrypt > + > +.globl aesni_decrypt > +.type aesni_decrypt,@function > +.align 16 > +aesni_decrypt: > +.cfi_startproc > + movups (%rdi),%xmm2 > + movl 240(%rdx),%eax > + movups (%rdx),%xmm0 > + movups 16(%rdx),%xmm1 > + leaq 32(%rdx),%rdx > + xorps %xmm0,%xmm2 > +.Loop_dec1_2: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rdx),%xmm1 > + leaq 16(%rdx),%rdx > + jnz .Loop_dec1_2 > +.byte 102,15,56,223,209 > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_decrypt, .-aesni_decrypt > +.type _aesni_encrypt2,@function > +.align 16 > +_aesni_encrypt2: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > + addq $16,%rax > + > +.Lenc_loop2: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lenc_loop2 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_encrypt2,.-_aesni_encrypt2 > +.type _aesni_decrypt2,@function > +.align 16 > +_aesni_decrypt2: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > + addq $16,%rax > + > +.Ldec_loop2: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Ldec_loop2 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,223,208 > +.byte 102,15,56,223,216 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_decrypt2,.-_aesni_decrypt2 > +.type _aesni_encrypt3,@function > +.align 16 > +_aesni_encrypt3: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + xorps %xmm0,%xmm4 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > + addq $16,%rax > + > +.Lenc_loop3: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lenc_loop3 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > +.byte 102,15,56,221,224 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_encrypt3,.-_aesni_encrypt3 > +.type _aesni_decrypt3,@function > +.align 16 > +_aesni_decrypt3: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + xorps %xmm0,%xmm4 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > + addq $16,%rax > + > +.Ldec_loop3: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Ldec_loop3 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,223,208 > +.byte 102,15,56,223,216 > +.byte 102,15,56,223,224 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_decrypt3,.-_aesni_decrypt3 > +.type _aesni_encrypt4,@function > +.align 16 > +_aesni_encrypt4: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + xorps %xmm0,%xmm4 > + xorps %xmm0,%xmm5 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 0x0f,0x1f,0x00 > + addq $16,%rax > + > +.Lenc_loop4: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lenc_loop4 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > +.byte 102,15,56,221,224 > +.byte 102,15,56,221,232 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_encrypt4,.-_aesni_encrypt4 > +.type _aesni_decrypt4,@function > +.align 16 > +_aesni_decrypt4: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + xorps %xmm0,%xmm4 > + xorps %xmm0,%xmm5 > + movups 32(%rcx),%xmm0 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 0x0f,0x1f,0x00 > + addq $16,%rax > + > +.Ldec_loop4: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Ldec_loop4 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,223,208 > +.byte 102,15,56,223,216 > +.byte 102,15,56,223,224 > +.byte 102,15,56,223,232 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_decrypt4,.-_aesni_decrypt4 > +.type _aesni_encrypt6,@function > +.align 16 > +_aesni_encrypt6: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + pxor %xmm0,%xmm3 > + pxor %xmm0,%xmm4 > +.byte 102,15,56,220,209 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 102,15,56,220,217 > + pxor %xmm0,%xmm5 > + pxor %xmm0,%xmm6 > +.byte 102,15,56,220,225 > + pxor %xmm0,%xmm7 > + movups (%rcx,%rax,1),%xmm0 > + addq $16,%rax > + jmp .Lenc_loop6_enter > +.align 16 > +.Lenc_loop6: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.Lenc_loop6_enter: > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lenc_loop6 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > +.byte 102,15,56,221,224 > +.byte 102,15,56,221,232 > +.byte 102,15,56,221,240 > +.byte 102,15,56,221,248 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_encrypt6,.-_aesni_encrypt6 > +.type _aesni_decrypt6,@function > +.align 16 > +_aesni_decrypt6: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + pxor %xmm0,%xmm3 > + pxor %xmm0,%xmm4 > +.byte 102,15,56,222,209 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 102,15,56,222,217 > + pxor %xmm0,%xmm5 > + pxor %xmm0,%xmm6 > +.byte 102,15,56,222,225 > + pxor %xmm0,%xmm7 > + movups (%rcx,%rax,1),%xmm0 > + addq $16,%rax > + jmp .Ldec_loop6_enter > +.align 16 > +.Ldec_loop6: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.Ldec_loop6_enter: > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Ldec_loop6 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,15,56,223,208 > +.byte 102,15,56,223,216 > +.byte 102,15,56,223,224 > +.byte 102,15,56,223,232 > +.byte 102,15,56,223,240 > +.byte 102,15,56,223,248 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_decrypt6,.-_aesni_decrypt6 > +.type _aesni_encrypt8,@function > +.align 16 > +_aesni_encrypt8: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + pxor %xmm0,%xmm4 > + pxor %xmm0,%xmm5 > + pxor %xmm0,%xmm6 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 102,15,56,220,209 > + pxor %xmm0,%xmm7 > + pxor %xmm0,%xmm8 > +.byte 102,15,56,220,217 > + pxor %xmm0,%xmm9 > + movups (%rcx,%rax,1),%xmm0 > + addq $16,%rax > + jmp .Lenc_loop8_inner > +.align 16 > +.Lenc_loop8: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.Lenc_loop8_inner: > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > +.Lenc_loop8_enter: > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lenc_loop8 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > +.byte 102,15,56,221,224 > +.byte 102,15,56,221,232 > +.byte 102,15,56,221,240 > +.byte 102,15,56,221,248 > +.byte 102,68,15,56,221,192 > +.byte 102,68,15,56,221,200 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_encrypt8,.-_aesni_encrypt8 > +.type _aesni_decrypt8,@function > +.align 16 > +_aesni_decrypt8: > +.cfi_startproc > + movups (%rcx),%xmm0 > + shll $4,%eax > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm2 > + xorps %xmm0,%xmm3 > + pxor %xmm0,%xmm4 > + pxor %xmm0,%xmm5 > + pxor %xmm0,%xmm6 > + leaq 32(%rcx,%rax,1),%rcx > + negq %rax > +.byte 102,15,56,222,209 > + pxor %xmm0,%xmm7 > + pxor %xmm0,%xmm8 > +.byte 102,15,56,222,217 > + pxor %xmm0,%xmm9 > + movups (%rcx,%rax,1),%xmm0 > + addq $16,%rax > + jmp .Ldec_loop8_inner > +.align 16 > +.Ldec_loop8: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.Ldec_loop8_inner: > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > +.Ldec_loop8_enter: > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Ldec_loop8 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > +.byte 102,15,56,223,208 > +.byte 102,15,56,223,216 > +.byte 102,15,56,223,224 > +.byte 102,15,56,223,232 > +.byte 102,15,56,223,240 > +.byte 102,15,56,223,248 > +.byte 102,68,15,56,223,192 > +.byte 102,68,15,56,223,200 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _aesni_decrypt8,.-_aesni_decrypt8 > +.globl aesni_ecb_encrypt > +.type aesni_ecb_encrypt,@function > +.align 16 > +aesni_ecb_encrypt: > +.cfi_startproc > + andq $-16,%rdx > + jz .Lecb_ret > + > + movl 240(%rcx),%eax > + movups (%rcx),%xmm0 > + movq %rcx,%r11 > + movl %eax,%r10d > + testl %r8d,%r8d > + jz .Lecb_decrypt > + > + cmpq $0x80,%rdx > + jb .Lecb_enc_tail > + > + movdqu (%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + movdqu 48(%rdi),%xmm5 > + movdqu 64(%rdi),%xmm6 > + movdqu 80(%rdi),%xmm7 > + movdqu 96(%rdi),%xmm8 > + movdqu 112(%rdi),%xmm9 > + leaq 128(%rdi),%rdi > + subq $0x80,%rdx > + jmp .Lecb_enc_loop8_enter > +.align 16 > +.Lecb_enc_loop8: > + movups %xmm2,(%rsi) > + movq %r11,%rcx > + movdqu (%rdi),%xmm2 > + movl %r10d,%eax > + movups %xmm3,16(%rsi) > + movdqu 16(%rdi),%xmm3 > + movups %xmm4,32(%rsi) > + movdqu 32(%rdi),%xmm4 > + movups %xmm5,48(%rsi) > + movdqu 48(%rdi),%xmm5 > + movups %xmm6,64(%rsi) > + movdqu 64(%rdi),%xmm6 > + movups %xmm7,80(%rsi) > + movdqu 80(%rdi),%xmm7 > + movups %xmm8,96(%rsi) > + movdqu 96(%rdi),%xmm8 > + movups %xmm9,112(%rsi) > + leaq 128(%rsi),%rsi > + movdqu 112(%rdi),%xmm9 > + leaq 128(%rdi),%rdi > +.Lecb_enc_loop8_enter: > + > + call _aesni_encrypt8 > + > + subq $0x80,%rdx > + jnc .Lecb_enc_loop8 > + > + movups %xmm2,(%rsi) > + movq %r11,%rcx > + movups %xmm3,16(%rsi) > + movl %r10d,%eax > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + movups %xmm7,80(%rsi) > + movups %xmm8,96(%rsi) > + movups %xmm9,112(%rsi) > + leaq 128(%rsi),%rsi > + addq $0x80,%rdx > + jz .Lecb_ret > + > +.Lecb_enc_tail: > + movups (%rdi),%xmm2 > + cmpq $0x20,%rdx > + jb .Lecb_enc_one > + movups 16(%rdi),%xmm3 > + je .Lecb_enc_two > + movups 32(%rdi),%xmm4 > + cmpq $0x40,%rdx > + jb .Lecb_enc_three > + movups 48(%rdi),%xmm5 > + je .Lecb_enc_four > + movups 64(%rdi),%xmm6 > + cmpq $0x60,%rdx > + jb .Lecb_enc_five > + movups 80(%rdi),%xmm7 > + je .Lecb_enc_six > + movdqu 96(%rdi),%xmm8 > + xorps %xmm9,%xmm9 > + call _aesni_encrypt8 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + movups %xmm7,80(%rsi) > + movups %xmm8,96(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_one: > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_enc1_3: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_3 > +.byte 102,15,56,221,209 > + movups %xmm2,(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_two: > + call _aesni_encrypt2 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_three: > + call _aesni_encrypt3 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_four: > + call _aesni_encrypt4 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_five: > + xorps %xmm7,%xmm7 > + call _aesni_encrypt6 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + jmp .Lecb_ret > +.align 16 > +.Lecb_enc_six: > + call _aesni_encrypt6 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + movups %xmm7,80(%rsi) > + jmp .Lecb_ret > + > +.align 16 > +.Lecb_decrypt: > + cmpq $0x80,%rdx > + jb .Lecb_dec_tail > + > + movdqu (%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + movdqu 48(%rdi),%xmm5 > + movdqu 64(%rdi),%xmm6 > + movdqu 80(%rdi),%xmm7 > + movdqu 96(%rdi),%xmm8 > + movdqu 112(%rdi),%xmm9 > + leaq 128(%rdi),%rdi > + subq $0x80,%rdx > + jmp .Lecb_dec_loop8_enter > +.align 16 > +.Lecb_dec_loop8: > + movups %xmm2,(%rsi) > + movq %r11,%rcx > + movdqu (%rdi),%xmm2 > + movl %r10d,%eax > + movups %xmm3,16(%rsi) > + movdqu 16(%rdi),%xmm3 > + movups %xmm4,32(%rsi) > + movdqu 32(%rdi),%xmm4 > + movups %xmm5,48(%rsi) > + movdqu 48(%rdi),%xmm5 > + movups %xmm6,64(%rsi) > + movdqu 64(%rdi),%xmm6 > + movups %xmm7,80(%rsi) > + movdqu 80(%rdi),%xmm7 > + movups %xmm8,96(%rsi) > + movdqu 96(%rdi),%xmm8 > + movups %xmm9,112(%rsi) > + leaq 128(%rsi),%rsi > + movdqu 112(%rdi),%xmm9 > + leaq 128(%rdi),%rdi > +.Lecb_dec_loop8_enter: > + > + call _aesni_decrypt8 > + > + movups (%r11),%xmm0 > + subq $0x80,%rdx > + jnc .Lecb_dec_loop8 > + > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movq %r11,%rcx > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movl %r10d,%eax > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + movups %xmm7,80(%rsi) > + pxor %xmm7,%xmm7 > + movups %xmm8,96(%rsi) > + pxor %xmm8,%xmm8 > + movups %xmm9,112(%rsi) > + pxor %xmm9,%xmm9 > + leaq 128(%rsi),%rsi > + addq $0x80,%rdx > + jz .Lecb_ret > + > +.Lecb_dec_tail: > + movups (%rdi),%xmm2 > + cmpq $0x20,%rdx > + jb .Lecb_dec_one > + movups 16(%rdi),%xmm3 > + je .Lecb_dec_two > + movups 32(%rdi),%xmm4 > + cmpq $0x40,%rdx > + jb .Lecb_dec_three > + movups 48(%rdi),%xmm5 > + je .Lecb_dec_four > + movups 64(%rdi),%xmm6 > + cmpq $0x60,%rdx > + jb .Lecb_dec_five > + movups 80(%rdi),%xmm7 > + je .Lecb_dec_six > + movups 96(%rdi),%xmm8 > + movups (%rcx),%xmm0 > + xorps %xmm9,%xmm9 > + call _aesni_decrypt8 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + movups %xmm7,80(%rsi) > + pxor %xmm7,%xmm7 > + movups %xmm8,96(%rsi) > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_one: > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_4: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_4 > +.byte 102,15,56,223,209 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_two: > + call _aesni_decrypt2 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_three: > + call _aesni_decrypt3 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_four: > + call _aesni_decrypt4 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_five: > + xorps %xmm7,%xmm7 > + call _aesni_decrypt6 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + jmp .Lecb_ret > +.align 16 > +.Lecb_dec_six: > + call _aesni_decrypt6 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + movups %xmm7,80(%rsi) > + pxor %xmm7,%xmm7 > + > +.Lecb_ret: > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ecb_encrypt,.-aesni_ecb_encrypt > +.globl aesni_ccm64_encrypt_blocks > +.type aesni_ccm64_encrypt_blocks,@function > +.align 16 > +aesni_ccm64_encrypt_blocks: > +.cfi_startproc > + movl 240(%rcx),%eax > + movdqu (%r8),%xmm6 > + movdqa .Lincrement64(%rip),%xmm9 > + movdqa .Lbswap_mask(%rip),%xmm7 > + > + shll $4,%eax > + movl $16,%r10d > + leaq 0(%rcx),%r11 > + movdqu (%r9),%xmm3 > + movdqa %xmm6,%xmm2 > + leaq 32(%rcx,%rax,1),%rcx > +.byte 102,15,56,0,247 > + subq %rax,%r10 > + jmp .Lccm64_enc_outer > +.align 16 > +.Lccm64_enc_outer: > + movups (%r11),%xmm0 > + movq %r10,%rax > + movups (%rdi),%xmm8 > + > + xorps %xmm0,%xmm2 > + movups 16(%r11),%xmm1 > + xorps %xmm8,%xmm0 > + xorps %xmm0,%xmm3 > + movups 32(%r11),%xmm0 > + > +.Lccm64_enc2_loop: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lccm64_enc2_loop > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + paddq %xmm9,%xmm6 > + decq %rdx > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > + > + leaq 16(%rdi),%rdi > + xorps %xmm2,%xmm8 > + movdqa %xmm6,%xmm2 > + movups %xmm8,(%rsi) > +.byte 102,15,56,0,215 > + leaq 16(%rsi),%rsi > + jnz .Lccm64_enc_outer > + > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + movups %xmm3,(%r9) > + pxor %xmm3,%xmm3 > + pxor %xmm8,%xmm8 > + pxor %xmm6,%xmm6 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks > +.globl aesni_ccm64_decrypt_blocks > +.type aesni_ccm64_decrypt_blocks,@function > +.align 16 > +aesni_ccm64_decrypt_blocks: > +.cfi_startproc > + movl 240(%rcx),%eax > + movups (%r8),%xmm6 > + movdqu (%r9),%xmm3 > + movdqa .Lincrement64(%rip),%xmm9 > + movdqa .Lbswap_mask(%rip),%xmm7 > + > + movaps %xmm6,%xmm2 > + movl %eax,%r10d > + movq %rcx,%r11 > +.byte 102,15,56,0,247 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_enc1_5: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_5 > +.byte 102,15,56,221,209 > + shll $4,%r10d > + movl $16,%eax > + movups (%rdi),%xmm8 > + paddq %xmm9,%xmm6 > + leaq 16(%rdi),%rdi > + subq %r10,%rax > + leaq 32(%r11,%r10,1),%rcx > + movq %rax,%r10 > + jmp .Lccm64_dec_outer > +.align 16 > +.Lccm64_dec_outer: > + xorps %xmm2,%xmm8 > + movdqa %xmm6,%xmm2 > + movups %xmm8,(%rsi) > + leaq 16(%rsi),%rsi > +.byte 102,15,56,0,215 > + > + subq $1,%rdx > + jz .Lccm64_dec_break > + > + movups (%r11),%xmm0 > + movq %r10,%rax > + movups 16(%r11),%xmm1 > + xorps %xmm0,%xmm8 > + xorps %xmm0,%xmm2 > + xorps %xmm8,%xmm3 > + movups 32(%r11),%xmm0 > + jmp .Lccm64_dec2_loop > +.align 16 > +.Lccm64_dec2_loop: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Lccm64_dec2_loop > + movups (%rdi),%xmm8 > + paddq %xmm9,%xmm6 > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,221,208 > +.byte 102,15,56,221,216 > + leaq 16(%rdi),%rdi > + jmp .Lccm64_dec_outer > + > +.align 16 > +.Lccm64_dec_break: > + > + movl 240(%r11),%eax > + movups (%r11),%xmm0 > + movups 16(%r11),%xmm1 > + xorps %xmm0,%xmm8 > + leaq 32(%r11),%r11 > + xorps %xmm8,%xmm3 > +.Loop_enc1_6: > +.byte 102,15,56,220,217 > + decl %eax > + movups (%r11),%xmm1 > + leaq 16(%r11),%r11 > + jnz .Loop_enc1_6 > +.byte 102,15,56,221,217 > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + movups %xmm3,(%r9) > + pxor %xmm3,%xmm3 > + pxor %xmm8,%xmm8 > + pxor %xmm6,%xmm6 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks > +.globl aesni_ctr32_encrypt_blocks > +.type aesni_ctr32_encrypt_blocks,@function > +.align 16 > +aesni_ctr32_encrypt_blocks: > +.cfi_startproc > + cmpq $1,%rdx > + jne .Lctr32_bulk > + > + > + > + movups (%r8),%xmm2 > + movups (%rdi),%xmm3 > + movl 240(%rcx),%edx > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_enc1_7: > +.byte 102,15,56,220,209 > + decl %edx > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_7 > +.byte 102,15,56,221,209 > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + xorps %xmm3,%xmm2 > + pxor %xmm3,%xmm3 > + movups %xmm2,(%rsi) > + xorps %xmm2,%xmm2 > + jmp .Lctr32_epilogue > + > +.align 16 > +.Lctr32_bulk: > + leaq (%rsp),%r11 > +.cfi_def_cfa_register %r11 > + pushq %rbp > +.cfi_offset %rbp,-16 > + subq $128,%rsp > + andq $-16,%rsp > + > + > + > + > + movdqu (%r8),%xmm2 > + movdqu (%rcx),%xmm0 > + movl 12(%r8),%r8d > + pxor %xmm0,%xmm2 > + movl 12(%rcx),%ebp > + movdqa %xmm2,0(%rsp) > + bswapl %r8d > + movdqa %xmm2,%xmm3 > + movdqa %xmm2,%xmm4 > + movdqa %xmm2,%xmm5 > + movdqa %xmm2,64(%rsp) > + movdqa %xmm2,80(%rsp) > + movdqa %xmm2,96(%rsp) > + movq %rdx,%r10 > + movdqa %xmm2,112(%rsp) > + > + leaq 1(%r8),%rax > + leaq 2(%r8),%rdx > + bswapl %eax > + bswapl %edx > + xorl %ebp,%eax > + xorl %ebp,%edx > +.byte 102,15,58,34,216,3 > + leaq 3(%r8),%rax > + movdqa %xmm3,16(%rsp) > +.byte 102,15,58,34,226,3 > + bswapl %eax > + movq %r10,%rdx > + leaq 4(%r8),%r10 > + movdqa %xmm4,32(%rsp) > + xorl %ebp,%eax > + bswapl %r10d > +.byte 102,15,58,34,232,3 > + xorl %ebp,%r10d > + movdqa %xmm5,48(%rsp) > + leaq 5(%r8),%r9 > + movl %r10d,64+12(%rsp) > + bswapl %r9d > + leaq 6(%r8),%r10 > + movl 240(%rcx),%eax > + xorl %ebp,%r9d > + bswapl %r10d > + movl %r9d,80+12(%rsp) > + xorl %ebp,%r10d > + leaq 7(%r8),%r9 > + movl %r10d,96+12(%rsp) > + bswapl %r9d > + movl OPENSSL_ia32cap_P+4(%rip),%r10d > + xorl %ebp,%r9d > + andl $71303168,%r10d > + movl %r9d,112+12(%rsp) > + > + movups 16(%rcx),%xmm1 > + > + movdqa 64(%rsp),%xmm6 > + movdqa 80(%rsp),%xmm7 > + > + cmpq $8,%rdx > + jb .Lctr32_tail > + > + subq $6,%rdx > + cmpl $4194304,%r10d > + je .Lctr32_6x > + > + leaq 128(%rcx),%rcx > + subq $2,%rdx > + jmp .Lctr32_loop8 > + > +.align 16 > +.Lctr32_6x: > + shll $4,%eax > + movl $48,%r10d > + bswapl %ebp > + leaq 32(%rcx,%rax,1),%rcx > + subq %rax,%r10 > + jmp .Lctr32_loop6 > + > +.align 16 > +.Lctr32_loop6: > + addl $6,%r8d > + movups -48(%rcx,%r10,1),%xmm0 > +.byte 102,15,56,220,209 > + movl %r8d,%eax > + xorl %ebp,%eax > +.byte 102,15,56,220,217 > +.byte 0x0f,0x38,0xf1,0x44,0x24,12 > + leal 1(%r8),%eax > +.byte 102,15,56,220,225 > + xorl %ebp,%eax > +.byte 0x0f,0x38,0xf1,0x44,0x24,28 > +.byte 102,15,56,220,233 > + leal 2(%r8),%eax > + xorl %ebp,%eax > +.byte 102,15,56,220,241 > +.byte 0x0f,0x38,0xf1,0x44,0x24,44 > + leal 3(%r8),%eax > +.byte 102,15,56,220,249 > + movups -32(%rcx,%r10,1),%xmm1 > + xorl %ebp,%eax > + > +.byte 102,15,56,220,208 > +.byte 0x0f,0x38,0xf1,0x44,0x24,60 > + leal 4(%r8),%eax > +.byte 102,15,56,220,216 > + xorl %ebp,%eax > +.byte 0x0f,0x38,0xf1,0x44,0x24,76 > +.byte 102,15,56,220,224 > + leal 5(%r8),%eax > + xorl %ebp,%eax > +.byte 102,15,56,220,232 > +.byte 0x0f,0x38,0xf1,0x44,0x24,92 > + movq %r10,%rax > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups -16(%rcx,%r10,1),%xmm0 > + > + call .Lenc_loop6 > + > + movdqu (%rdi),%xmm8 > + movdqu 16(%rdi),%xmm9 > + movdqu 32(%rdi),%xmm10 > + movdqu 48(%rdi),%xmm11 > + movdqu 64(%rdi),%xmm12 > + movdqu 80(%rdi),%xmm13 > + leaq 96(%rdi),%rdi > + movups -64(%rcx,%r10,1),%xmm1 > + pxor %xmm2,%xmm8 > + movaps 0(%rsp),%xmm2 > + pxor %xmm3,%xmm9 > + movaps 16(%rsp),%xmm3 > + pxor %xmm4,%xmm10 > + movaps 32(%rsp),%xmm4 > + pxor %xmm5,%xmm11 > + movaps 48(%rsp),%xmm5 > + pxor %xmm6,%xmm12 > + movaps 64(%rsp),%xmm6 > + pxor %xmm7,%xmm13 > + movaps 80(%rsp),%xmm7 > + movdqu %xmm8,(%rsi) > + movdqu %xmm9,16(%rsi) > + movdqu %xmm10,32(%rsi) > + movdqu %xmm11,48(%rsi) > + movdqu %xmm12,64(%rsi) > + movdqu %xmm13,80(%rsi) > + leaq 96(%rsi),%rsi > + > + subq $6,%rdx > + jnc .Lctr32_loop6 > + > + addq $6,%rdx > + jz .Lctr32_done > + > + leal -48(%r10),%eax > + leaq -80(%rcx,%r10,1),%rcx > + negl %eax > + shrl $4,%eax > + jmp .Lctr32_tail > + > +.align 32 > +.Lctr32_loop8: > + addl $8,%r8d > + movdqa 96(%rsp),%xmm8 > +.byte 102,15,56,220,209 > + movl %r8d,%r9d > + movdqa 112(%rsp),%xmm9 > +.byte 102,15,56,220,217 > + bswapl %r9d > + movups 32-128(%rcx),%xmm0 > +.byte 102,15,56,220,225 > + xorl %ebp,%r9d > + nop > +.byte 102,15,56,220,233 > + movl %r9d,0+12(%rsp) > + leaq 1(%r8),%r9 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 48-128(%rcx),%xmm1 > + bswapl %r9d > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movl %r9d,16+12(%rsp) > + leaq 2(%r8),%r9 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 64-128(%rcx),%xmm0 > + bswapl %r9d > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movl %r9d,32+12(%rsp) > + leaq 3(%r8),%r9 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 80-128(%rcx),%xmm1 > + bswapl %r9d > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movl %r9d,48+12(%rsp) > + leaq 4(%r8),%r9 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 96-128(%rcx),%xmm0 > + bswapl %r9d > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movl %r9d,64+12(%rsp) > + leaq 5(%r8),%r9 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 112-128(%rcx),%xmm1 > + bswapl %r9d > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movl %r9d,80+12(%rsp) > + leaq 6(%r8),%r9 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 128-128(%rcx),%xmm0 > + bswapl %r9d > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + xorl %ebp,%r9d > +.byte 0x66,0x90 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movl %r9d,96+12(%rsp) > + leaq 7(%r8),%r9 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 144-128(%rcx),%xmm1 > + bswapl %r9d > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > + xorl %ebp,%r9d > + movdqu 0(%rdi),%xmm10 > +.byte 102,15,56,220,232 > + movl %r9d,112+12(%rsp) > + cmpl $11,%eax > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 160-128(%rcx),%xmm0 > + > + jb .Lctr32_enc_done > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 176-128(%rcx),%xmm1 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 192-128(%rcx),%xmm0 > + je .Lctr32_enc_done > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movups 208-128(%rcx),%xmm1 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > +.byte 102,68,15,56,220,192 > +.byte 102,68,15,56,220,200 > + movups 224-128(%rcx),%xmm0 > + jmp .Lctr32_enc_done > + > +.align 16 > +.Lctr32_enc_done: > + movdqu 16(%rdi),%xmm11 > + pxor %xmm0,%xmm10 > + movdqu 32(%rdi),%xmm12 > + pxor %xmm0,%xmm11 > + movdqu 48(%rdi),%xmm13 > + pxor %xmm0,%xmm12 > + movdqu 64(%rdi),%xmm14 > + pxor %xmm0,%xmm13 > + movdqu 80(%rdi),%xmm15 > + pxor %xmm0,%xmm14 > + pxor %xmm0,%xmm15 > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > +.byte 102,68,15,56,220,201 > + movdqu 96(%rdi),%xmm1 > + leaq 128(%rdi),%rdi > + > +.byte 102,65,15,56,221,210 > + pxor %xmm0,%xmm1 > + movdqu 112-128(%rdi),%xmm10 > +.byte 102,65,15,56,221,219 > + pxor %xmm0,%xmm10 > + movdqa 0(%rsp),%xmm11 > +.byte 102,65,15,56,221,228 > +.byte 102,65,15,56,221,237 > + movdqa 16(%rsp),%xmm12 > + movdqa 32(%rsp),%xmm13 > +.byte 102,65,15,56,221,246 > +.byte 102,65,15,56,221,255 > + movdqa 48(%rsp),%xmm14 > + movdqa 64(%rsp),%xmm15 > +.byte 102,68,15,56,221,193 > + movdqa 80(%rsp),%xmm0 > + movups 16-128(%rcx),%xmm1 > +.byte 102,69,15,56,221,202 > + > + movups %xmm2,(%rsi) > + movdqa %xmm11,%xmm2 > + movups %xmm3,16(%rsi) > + movdqa %xmm12,%xmm3 > + movups %xmm4,32(%rsi) > + movdqa %xmm13,%xmm4 > + movups %xmm5,48(%rsi) > + movdqa %xmm14,%xmm5 > + movups %xmm6,64(%rsi) > + movdqa %xmm15,%xmm6 > + movups %xmm7,80(%rsi) > + movdqa %xmm0,%xmm7 > + movups %xmm8,96(%rsi) > + movups %xmm9,112(%rsi) > + leaq 128(%rsi),%rsi > + > + subq $8,%rdx > + jnc .Lctr32_loop8 > + > + addq $8,%rdx > + jz .Lctr32_done > + leaq -128(%rcx),%rcx > + > +.Lctr32_tail: > + > + > + leaq 16(%rcx),%rcx > + cmpq $4,%rdx > + jb .Lctr32_loop3 > + je .Lctr32_loop4 > + > + > + shll $4,%eax > + movdqa 96(%rsp),%xmm8 > + pxor %xmm9,%xmm9 > + > + movups 16(%rcx),%xmm0 > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > + leaq 32-16(%rcx,%rax,1),%rcx > + negq %rax > +.byte 102,15,56,220,225 > + addq $16,%rax > + movups (%rdi),%xmm10 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > + movups 16(%rdi),%xmm11 > + movups 32(%rdi),%xmm12 > +.byte 102,15,56,220,249 > +.byte 102,68,15,56,220,193 > + > + call .Lenc_loop8_enter > + > + movdqu 48(%rdi),%xmm13 > + pxor %xmm10,%xmm2 > + movdqu 64(%rdi),%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm10,%xmm6 > + movdqu %xmm5,48(%rsi) > + movdqu %xmm6,64(%rsi) > + cmpq $6,%rdx > + jb .Lctr32_done > + > + movups 80(%rdi),%xmm11 > + xorps %xmm11,%xmm7 > + movups %xmm7,80(%rsi) > + je .Lctr32_done > + > + movups 96(%rdi),%xmm12 > + xorps %xmm12,%xmm8 > + movups %xmm8,96(%rsi) > + jmp .Lctr32_done > + > +.align 32 > +.Lctr32_loop4: > +.byte 102,15,56,220,209 > + leaq 16(%rcx),%rcx > + decl %eax > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups (%rcx),%xmm1 > + jnz .Lctr32_loop4 > +.byte 102,15,56,221,209 > +.byte 102,15,56,221,217 > + movups (%rdi),%xmm10 > + movups 16(%rdi),%xmm11 > +.byte 102,15,56,221,225 > +.byte 102,15,56,221,233 > + movups 32(%rdi),%xmm12 > + movups 48(%rdi),%xmm13 > + > + xorps %xmm10,%xmm2 > + movups %xmm2,(%rsi) > + xorps %xmm11,%xmm3 > + movups %xmm3,16(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm4,32(%rsi) > + pxor %xmm13,%xmm5 > + movdqu %xmm5,48(%rsi) > + jmp .Lctr32_done > + > +.align 32 > +.Lctr32_loop3: > +.byte 102,15,56,220,209 > + leaq 16(%rcx),%rcx > + decl %eax > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > + movups (%rcx),%xmm1 > + jnz .Lctr32_loop3 > +.byte 102,15,56,221,209 > +.byte 102,15,56,221,217 > +.byte 102,15,56,221,225 > + > + movups (%rdi),%xmm10 > + xorps %xmm10,%xmm2 > + movups %xmm2,(%rsi) > + cmpq $2,%rdx > + jb .Lctr32_done > + > + movups 16(%rdi),%xmm11 > + xorps %xmm11,%xmm3 > + movups %xmm3,16(%rsi) > + je .Lctr32_done > + > + movups 32(%rdi),%xmm12 > + xorps %xmm12,%xmm4 > + movups %xmm4,32(%rsi) > + > +.Lctr32_done: > + xorps %xmm0,%xmm0 > + xorl %ebp,%ebp > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + movaps %xmm0,0(%rsp) > + pxor %xmm8,%xmm8 > + movaps %xmm0,16(%rsp) > + pxor %xmm9,%xmm9 > + movaps %xmm0,32(%rsp) > + pxor %xmm10,%xmm10 > + movaps %xmm0,48(%rsp) > + pxor %xmm11,%xmm11 > + movaps %xmm0,64(%rsp) > + pxor %xmm12,%xmm12 > + movaps %xmm0,80(%rsp) > + pxor %xmm13,%xmm13 > + movaps %xmm0,96(%rsp) > + pxor %xmm14,%xmm14 > + movaps %xmm0,112(%rsp) > + pxor %xmm15,%xmm15 > + movq -8(%r11),%rbp > +.cfi_restore %rbp > + leaq (%r11),%rsp > +.cfi_def_cfa_register %rsp > +.Lctr32_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ctr32_encrypt_blocks,.-aesni_ctr32_encrypt_blocks > +.globl aesni_xts_encrypt > +.type aesni_xts_encrypt,@function > +.align 16 > +aesni_xts_encrypt: > +.cfi_startproc > + leaq (%rsp),%r11 > +.cfi_def_cfa_register %r11 > + pushq %rbp > +.cfi_offset %rbp,-16 > + subq $112,%rsp > + andq $-16,%rsp > + movups (%r9),%xmm2 > + movl 240(%r8),%eax > + movl 240(%rcx),%r10d > + movups (%r8),%xmm0 > + movups 16(%r8),%xmm1 > + leaq 32(%r8),%r8 > + xorps %xmm0,%xmm2 > +.Loop_enc1_8: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%r8),%xmm1 > + leaq 16(%r8),%r8 > + jnz .Loop_enc1_8 > +.byte 102,15,56,221,209 > + movups (%rcx),%xmm0 > + movq %rcx,%rbp > + movl %r10d,%eax > + shll $4,%r10d > + movq %rdx,%r9 > + andq $-16,%rdx > + > + movups 16(%rcx,%r10,1),%xmm1 > + > + movdqa .Lxts_magic(%rip),%xmm8 > + movdqa %xmm2,%xmm15 > + pshufd $0x5f,%xmm2,%xmm9 > + pxor %xmm0,%xmm1 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm10 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm10 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm11 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm11 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm12 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm12 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm13 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm13 > + pxor %xmm14,%xmm15 > + movdqa %xmm15,%xmm14 > + psrad $31,%xmm9 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm9 > + pxor %xmm0,%xmm14 > + pxor %xmm9,%xmm15 > + movaps %xmm1,96(%rsp) > + > + subq $96,%rdx > + jc .Lxts_enc_short > + > + movl $16+96,%eax > + leaq 32(%rbp,%r10,1),%rcx > + subq %r10,%rax > + movups 16(%rbp),%xmm1 > + movq %rax,%r10 > + leaq .Lxts_magic(%rip),%r8 > + jmp .Lxts_enc_grandloop > + > +.align 32 > +.Lxts_enc_grandloop: > + movdqu 0(%rdi),%xmm2 > + movdqa %xmm0,%xmm8 > + movdqu 16(%rdi),%xmm3 > + pxor %xmm10,%xmm2 > + movdqu 32(%rdi),%xmm4 > + pxor %xmm11,%xmm3 > +.byte 102,15,56,220,209 > + movdqu 48(%rdi),%xmm5 > + pxor %xmm12,%xmm4 > +.byte 102,15,56,220,217 > + movdqu 64(%rdi),%xmm6 > + pxor %xmm13,%xmm5 > +.byte 102,15,56,220,225 > + movdqu 80(%rdi),%xmm7 > + pxor %xmm15,%xmm8 > + movdqa 96(%rsp),%xmm9 > + pxor %xmm14,%xmm6 > +.byte 102,15,56,220,233 > + movups 32(%rbp),%xmm0 > + leaq 96(%rdi),%rdi > + pxor %xmm8,%xmm7 > + > + pxor %xmm9,%xmm10 > +.byte 102,15,56,220,241 > + pxor %xmm9,%xmm11 > + movdqa %xmm10,0(%rsp) > +.byte 102,15,56,220,249 > + movups 48(%rbp),%xmm1 > + pxor %xmm9,%xmm12 > + > +.byte 102,15,56,220,208 > + pxor %xmm9,%xmm13 > + movdqa %xmm11,16(%rsp) > +.byte 102,15,56,220,216 > + pxor %xmm9,%xmm14 > + movdqa %xmm12,32(%rsp) > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + pxor %xmm9,%xmm8 > + movdqa %xmm14,64(%rsp) > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups 64(%rbp),%xmm0 > + movdqa %xmm8,80(%rsp) > + pshufd $0x5f,%xmm15,%xmm9 > + jmp .Lxts_enc_loop6 > +.align 32 > +.Lxts_enc_loop6: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > + movups -64(%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups -80(%rcx,%rax,1),%xmm0 > + jnz .Lxts_enc_loop6 > + > + movdqa (%r8),%xmm8 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > +.byte 102,15,56,220,209 > + paddq %xmm15,%xmm15 > + psrad $31,%xmm14 > +.byte 102,15,56,220,217 > + pand %xmm8,%xmm14 > + movups (%rbp),%xmm10 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > + pxor %xmm14,%xmm15 > + movaps %xmm10,%xmm11 > +.byte 102,15,56,220,249 > + movups -64(%rcx),%xmm1 > + > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,220,208 > + paddd %xmm9,%xmm9 > + pxor %xmm15,%xmm10 > +.byte 102,15,56,220,216 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + pand %xmm8,%xmm14 > + movaps %xmm11,%xmm12 > +.byte 102,15,56,220,240 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,220,248 > + movups -48(%rcx),%xmm0 > + > + paddd %xmm9,%xmm9 > +.byte 102,15,56,220,209 > + pxor %xmm15,%xmm11 > + psrad $31,%xmm14 > +.byte 102,15,56,220,217 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movdqa %xmm13,48(%rsp) > + pxor %xmm14,%xmm15 > +.byte 102,15,56,220,241 > + movaps %xmm12,%xmm13 > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,220,249 > + movups -32(%rcx),%xmm1 > + > + paddd %xmm9,%xmm9 > +.byte 102,15,56,220,208 > + pxor %xmm15,%xmm12 > + psrad $31,%xmm14 > +.byte 102,15,56,220,216 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > + pxor %xmm14,%xmm15 > + movaps %xmm13,%xmm14 > +.byte 102,15,56,220,248 > + > + movdqa %xmm9,%xmm0 > + paddd %xmm9,%xmm9 > +.byte 102,15,56,220,209 > + pxor %xmm15,%xmm13 > + psrad $31,%xmm0 > +.byte 102,15,56,220,217 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm0 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + pxor %xmm0,%xmm15 > + movups (%rbp),%xmm0 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > + movups 16(%rbp),%xmm1 > + > + pxor %xmm15,%xmm14 > +.byte 102,15,56,221,84,36,0 > + psrad $31,%xmm9 > + paddq %xmm15,%xmm15 > +.byte 102,15,56,221,92,36,16 > +.byte 102,15,56,221,100,36,32 > + pand %xmm8,%xmm9 > + movq %r10,%rax > +.byte 102,15,56,221,108,36,48 > +.byte 102,15,56,221,116,36,64 > +.byte 102,15,56,221,124,36,80 > + pxor %xmm9,%xmm15 > + > + leaq 96(%rsi),%rsi > + movups %xmm2,-96(%rsi) > + movups %xmm3,-80(%rsi) > + movups %xmm4,-64(%rsi) > + movups %xmm5,-48(%rsi) > + movups %xmm6,-32(%rsi) > + movups %xmm7,-16(%rsi) > + subq $96,%rdx > + jnc .Lxts_enc_grandloop > + > + movl $16+96,%eax > + subl %r10d,%eax > + movq %rbp,%rcx > + shrl $4,%eax > + > +.Lxts_enc_short: > + > + movl %eax,%r10d > + pxor %xmm0,%xmm10 > + addq $96,%rdx > + jz .Lxts_enc_done > + > + pxor %xmm0,%xmm11 > + cmpq $0x20,%rdx > + jb .Lxts_enc_one > + pxor %xmm0,%xmm12 > + je .Lxts_enc_two > + > + pxor %xmm0,%xmm13 > + cmpq $0x40,%rdx > + jb .Lxts_enc_three > + pxor %xmm0,%xmm14 > + je .Lxts_enc_four > + > + movdqu (%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + pxor %xmm10,%xmm2 > + movdqu 48(%rdi),%xmm5 > + pxor %xmm11,%xmm3 > + movdqu 64(%rdi),%xmm6 > + leaq 80(%rdi),%rdi > + pxor %xmm12,%xmm4 > + pxor %xmm13,%xmm5 > + pxor %xmm14,%xmm6 > + pxor %xmm7,%xmm7 > + > + call _aesni_encrypt6 > + > + xorps %xmm10,%xmm2 > + movdqa %xmm15,%xmm10 > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + movdqu %xmm2,(%rsi) > + xorps %xmm13,%xmm5 > + movdqu %xmm3,16(%rsi) > + xorps %xmm14,%xmm6 > + movdqu %xmm4,32(%rsi) > + movdqu %xmm5,48(%rsi) > + movdqu %xmm6,64(%rsi) > + leaq 80(%rsi),%rsi > + jmp .Lxts_enc_done > + > +.align 16 > +.Lxts_enc_one: > + movups (%rdi),%xmm2 > + leaq 16(%rdi),%rdi > + xorps %xmm10,%xmm2 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_enc1_9: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_9 > +.byte 102,15,56,221,209 > + xorps %xmm10,%xmm2 > + movdqa %xmm11,%xmm10 > + movups %xmm2,(%rsi) > + leaq 16(%rsi),%rsi > + jmp .Lxts_enc_done > + > +.align 16 > +.Lxts_enc_two: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + leaq 32(%rdi),%rdi > + xorps %xmm10,%xmm2 > + xorps %xmm11,%xmm3 > + > + call _aesni_encrypt2 > + > + xorps %xmm10,%xmm2 > + movdqa %xmm12,%xmm10 > + xorps %xmm11,%xmm3 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + leaq 32(%rsi),%rsi > + jmp .Lxts_enc_done > + > +.align 16 > +.Lxts_enc_three: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + movups 32(%rdi),%xmm4 > + leaq 48(%rdi),%rdi > + xorps %xmm10,%xmm2 > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + > + call _aesni_encrypt3 > + > + xorps %xmm10,%xmm2 > + movdqa %xmm13,%xmm10 > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + leaq 48(%rsi),%rsi > + jmp .Lxts_enc_done > + > +.align 16 > +.Lxts_enc_four: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + movups 32(%rdi),%xmm4 > + xorps %xmm10,%xmm2 > + movups 48(%rdi),%xmm5 > + leaq 64(%rdi),%rdi > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + xorps %xmm13,%xmm5 > + > + call _aesni_encrypt4 > + > + pxor %xmm10,%xmm2 > + movdqa %xmm14,%xmm10 > + pxor %xmm11,%xmm3 > + pxor %xmm12,%xmm4 > + movdqu %xmm2,(%rsi) > + pxor %xmm13,%xmm5 > + movdqu %xmm3,16(%rsi) > + movdqu %xmm4,32(%rsi) > + movdqu %xmm5,48(%rsi) > + leaq 64(%rsi),%rsi > + jmp .Lxts_enc_done > + > +.align 16 > +.Lxts_enc_done: > + andq $15,%r9 > + jz .Lxts_enc_ret > + movq %r9,%rdx > + > +.Lxts_enc_steal: > + movzbl (%rdi),%eax > + movzbl -16(%rsi),%ecx > + leaq 1(%rdi),%rdi > + movb %al,-16(%rsi) > + movb %cl,0(%rsi) > + leaq 1(%rsi),%rsi > + subq $1,%rdx > + jnz .Lxts_enc_steal > + > + subq %r9,%rsi > + movq %rbp,%rcx > + movl %r10d,%eax > + > + movups -16(%rsi),%xmm2 > + xorps %xmm10,%xmm2 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_enc1_10: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_10 > +.byte 102,15,56,221,209 > + xorps %xmm10,%xmm2 > + movups %xmm2,-16(%rsi) > + > +.Lxts_enc_ret: > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + movaps %xmm0,0(%rsp) > + pxor %xmm8,%xmm8 > + movaps %xmm0,16(%rsp) > + pxor %xmm9,%xmm9 > + movaps %xmm0,32(%rsp) > + pxor %xmm10,%xmm10 > + movaps %xmm0,48(%rsp) > + pxor %xmm11,%xmm11 > + movaps %xmm0,64(%rsp) > + pxor %xmm12,%xmm12 > + movaps %xmm0,80(%rsp) > + pxor %xmm13,%xmm13 > + movaps %xmm0,96(%rsp) > + pxor %xmm14,%xmm14 > + pxor %xmm15,%xmm15 > + movq -8(%r11),%rbp > +.cfi_restore %rbp > + leaq (%r11),%rsp > +.cfi_def_cfa_register %rsp > +.Lxts_enc_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_xts_encrypt,.-aesni_xts_encrypt > +.globl aesni_xts_decrypt > +.type aesni_xts_decrypt,@function > +.align 16 > +aesni_xts_decrypt: > +.cfi_startproc > + leaq (%rsp),%r11 > +.cfi_def_cfa_register %r11 > + pushq %rbp > +.cfi_offset %rbp,-16 > + subq $112,%rsp > + andq $-16,%rsp > + movups (%r9),%xmm2 > + movl 240(%r8),%eax > + movl 240(%rcx),%r10d > + movups (%r8),%xmm0 > + movups 16(%r8),%xmm1 > + leaq 32(%r8),%r8 > + xorps %xmm0,%xmm2 > +.Loop_enc1_11: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%r8),%xmm1 > + leaq 16(%r8),%r8 > + jnz .Loop_enc1_11 > +.byte 102,15,56,221,209 > + xorl %eax,%eax > + testq $15,%rdx > + setnz %al > + shlq $4,%rax > + subq %rax,%rdx > + > + movups (%rcx),%xmm0 > + movq %rcx,%rbp > + movl %r10d,%eax > + shll $4,%r10d > + movq %rdx,%r9 > + andq $-16,%rdx > + > + movups 16(%rcx,%r10,1),%xmm1 > + > + movdqa .Lxts_magic(%rip),%xmm8 > + movdqa %xmm2,%xmm15 > + pshufd $0x5f,%xmm2,%xmm9 > + pxor %xmm0,%xmm1 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm10 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm10 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm11 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm11 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm12 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm12 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > + movdqa %xmm15,%xmm13 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > + pxor %xmm0,%xmm13 > + pxor %xmm14,%xmm15 > + movdqa %xmm15,%xmm14 > + psrad $31,%xmm9 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm9 > + pxor %xmm0,%xmm14 > + pxor %xmm9,%xmm15 > + movaps %xmm1,96(%rsp) > + > + subq $96,%rdx > + jc .Lxts_dec_short > + > + movl $16+96,%eax > + leaq 32(%rbp,%r10,1),%rcx > + subq %r10,%rax > + movups 16(%rbp),%xmm1 > + movq %rax,%r10 > + leaq .Lxts_magic(%rip),%r8 > + jmp .Lxts_dec_grandloop > + > +.align 32 > +.Lxts_dec_grandloop: > + movdqu 0(%rdi),%xmm2 > + movdqa %xmm0,%xmm8 > + movdqu 16(%rdi),%xmm3 > + pxor %xmm10,%xmm2 > + movdqu 32(%rdi),%xmm4 > + pxor %xmm11,%xmm3 > +.byte 102,15,56,222,209 > + movdqu 48(%rdi),%xmm5 > + pxor %xmm12,%xmm4 > +.byte 102,15,56,222,217 > + movdqu 64(%rdi),%xmm6 > + pxor %xmm13,%xmm5 > +.byte 102,15,56,222,225 > + movdqu 80(%rdi),%xmm7 > + pxor %xmm15,%xmm8 > + movdqa 96(%rsp),%xmm9 > + pxor %xmm14,%xmm6 > +.byte 102,15,56,222,233 > + movups 32(%rbp),%xmm0 > + leaq 96(%rdi),%rdi > + pxor %xmm8,%xmm7 > + > + pxor %xmm9,%xmm10 > +.byte 102,15,56,222,241 > + pxor %xmm9,%xmm11 > + movdqa %xmm10,0(%rsp) > +.byte 102,15,56,222,249 > + movups 48(%rbp),%xmm1 > + pxor %xmm9,%xmm12 > + > +.byte 102,15,56,222,208 > + pxor %xmm9,%xmm13 > + movdqa %xmm11,16(%rsp) > +.byte 102,15,56,222,216 > + pxor %xmm9,%xmm14 > + movdqa %xmm12,32(%rsp) > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + pxor %xmm9,%xmm8 > + movdqa %xmm14,64(%rsp) > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > + movups 64(%rbp),%xmm0 > + movdqa %xmm8,80(%rsp) > + pshufd $0x5f,%xmm15,%xmm9 > + jmp .Lxts_dec_loop6 > +.align 32 > +.Lxts_dec_loop6: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + movups -64(%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > + movups -80(%rcx,%rax,1),%xmm0 > + jnz .Lxts_dec_loop6 > + > + movdqa (%r8),%xmm8 > + movdqa %xmm9,%xmm14 > + paddd %xmm9,%xmm9 > +.byte 102,15,56,222,209 > + paddq %xmm15,%xmm15 > + psrad $31,%xmm14 > +.byte 102,15,56,222,217 > + pand %xmm8,%xmm14 > + movups (%rbp),%xmm10 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > + pxor %xmm14,%xmm15 > + movaps %xmm10,%xmm11 > +.byte 102,15,56,222,249 > + movups -64(%rcx),%xmm1 > + > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,222,208 > + paddd %xmm9,%xmm9 > + pxor %xmm15,%xmm10 > +.byte 102,15,56,222,216 > + psrad $31,%xmm14 > + paddq %xmm15,%xmm15 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + pand %xmm8,%xmm14 > + movaps %xmm11,%xmm12 > +.byte 102,15,56,222,240 > + pxor %xmm14,%xmm15 > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,222,248 > + movups -48(%rcx),%xmm0 > + > + paddd %xmm9,%xmm9 > +.byte 102,15,56,222,209 > + pxor %xmm15,%xmm11 > + psrad $31,%xmm14 > +.byte 102,15,56,222,217 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movdqa %xmm13,48(%rsp) > + pxor %xmm14,%xmm15 > +.byte 102,15,56,222,241 > + movaps %xmm12,%xmm13 > + movdqa %xmm9,%xmm14 > +.byte 102,15,56,222,249 > + movups -32(%rcx),%xmm1 > + > + paddd %xmm9,%xmm9 > +.byte 102,15,56,222,208 > + pxor %xmm15,%xmm12 > + psrad $31,%xmm14 > +.byte 102,15,56,222,216 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm14 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > + pxor %xmm14,%xmm15 > + movaps %xmm13,%xmm14 > +.byte 102,15,56,222,248 > + > + movdqa %xmm9,%xmm0 > + paddd %xmm9,%xmm9 > +.byte 102,15,56,222,209 > + pxor %xmm15,%xmm13 > + psrad $31,%xmm0 > +.byte 102,15,56,222,217 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm0 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + pxor %xmm0,%xmm15 > + movups (%rbp),%xmm0 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + movups 16(%rbp),%xmm1 > + > + pxor %xmm15,%xmm14 > +.byte 102,15,56,223,84,36,0 > + psrad $31,%xmm9 > + paddq %xmm15,%xmm15 > +.byte 102,15,56,223,92,36,16 > +.byte 102,15,56,223,100,36,32 > + pand %xmm8,%xmm9 > + movq %r10,%rax > +.byte 102,15,56,223,108,36,48 > +.byte 102,15,56,223,116,36,64 > +.byte 102,15,56,223,124,36,80 > + pxor %xmm9,%xmm15 > + > + leaq 96(%rsi),%rsi > + movups %xmm2,-96(%rsi) > + movups %xmm3,-80(%rsi) > + movups %xmm4,-64(%rsi) > + movups %xmm5,-48(%rsi) > + movups %xmm6,-32(%rsi) > + movups %xmm7,-16(%rsi) > + subq $96,%rdx > + jnc .Lxts_dec_grandloop > + > + movl $16+96,%eax > + subl %r10d,%eax > + movq %rbp,%rcx > + shrl $4,%eax > + > +.Lxts_dec_short: > + > + movl %eax,%r10d > + pxor %xmm0,%xmm10 > + pxor %xmm0,%xmm11 > + addq $96,%rdx > + jz .Lxts_dec_done > + > + pxor %xmm0,%xmm12 > + cmpq $0x20,%rdx > + jb .Lxts_dec_one > + pxor %xmm0,%xmm13 > + je .Lxts_dec_two > + > + pxor %xmm0,%xmm14 > + cmpq $0x40,%rdx > + jb .Lxts_dec_three > + je .Lxts_dec_four > + > + movdqu (%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + pxor %xmm10,%xmm2 > + movdqu 48(%rdi),%xmm5 > + pxor %xmm11,%xmm3 > + movdqu 64(%rdi),%xmm6 > + leaq 80(%rdi),%rdi > + pxor %xmm12,%xmm4 > + pxor %xmm13,%xmm5 > + pxor %xmm14,%xmm6 > + > + call _aesni_decrypt6 > + > + xorps %xmm10,%xmm2 > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + movdqu %xmm2,(%rsi) > + xorps %xmm13,%xmm5 > + movdqu %xmm3,16(%rsi) > + xorps %xmm14,%xmm6 > + movdqu %xmm4,32(%rsi) > + pxor %xmm14,%xmm14 > + movdqu %xmm5,48(%rsi) > + pcmpgtd %xmm15,%xmm14 > + movdqu %xmm6,64(%rsi) > + leaq 80(%rsi),%rsi > + pshufd $0x13,%xmm14,%xmm11 > + andq $15,%r9 > + jz .Lxts_dec_ret > + > + movdqa %xmm15,%xmm10 > + paddq %xmm15,%xmm15 > + pand %xmm8,%xmm11 > + pxor %xmm15,%xmm11 > + jmp .Lxts_dec_done2 > + > +.align 16 > +.Lxts_dec_one: > + movups (%rdi),%xmm2 > + leaq 16(%rdi),%rdi > + xorps %xmm10,%xmm2 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_12: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_12 > +.byte 102,15,56,223,209 > + xorps %xmm10,%xmm2 > + movdqa %xmm11,%xmm10 > + movups %xmm2,(%rsi) > + movdqa %xmm12,%xmm11 > + leaq 16(%rsi),%rsi > + jmp .Lxts_dec_done > + > +.align 16 > +.Lxts_dec_two: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + leaq 32(%rdi),%rdi > + xorps %xmm10,%xmm2 > + xorps %xmm11,%xmm3 > + > + call _aesni_decrypt2 > + > + xorps %xmm10,%xmm2 > + movdqa %xmm12,%xmm10 > + xorps %xmm11,%xmm3 > + movdqa %xmm13,%xmm11 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + leaq 32(%rsi),%rsi > + jmp .Lxts_dec_done > + > +.align 16 > +.Lxts_dec_three: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + movups 32(%rdi),%xmm4 > + leaq 48(%rdi),%rdi > + xorps %xmm10,%xmm2 > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + > + call _aesni_decrypt3 > + > + xorps %xmm10,%xmm2 > + movdqa %xmm13,%xmm10 > + xorps %xmm11,%xmm3 > + movdqa %xmm14,%xmm11 > + xorps %xmm12,%xmm4 > + movups %xmm2,(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + leaq 48(%rsi),%rsi > + jmp .Lxts_dec_done > + > +.align 16 > +.Lxts_dec_four: > + movups (%rdi),%xmm2 > + movups 16(%rdi),%xmm3 > + movups 32(%rdi),%xmm4 > + xorps %xmm10,%xmm2 > + movups 48(%rdi),%xmm5 > + leaq 64(%rdi),%rdi > + xorps %xmm11,%xmm3 > + xorps %xmm12,%xmm4 > + xorps %xmm13,%xmm5 > + > + call _aesni_decrypt4 > + > + pxor %xmm10,%xmm2 > + movdqa %xmm14,%xmm10 > + pxor %xmm11,%xmm3 > + movdqa %xmm15,%xmm11 > + pxor %xmm12,%xmm4 > + movdqu %xmm2,(%rsi) > + pxor %xmm13,%xmm5 > + movdqu %xmm3,16(%rsi) > + movdqu %xmm4,32(%rsi) > + movdqu %xmm5,48(%rsi) > + leaq 64(%rsi),%rsi > + jmp .Lxts_dec_done > + > +.align 16 > +.Lxts_dec_done: > + andq $15,%r9 > + jz .Lxts_dec_ret > +.Lxts_dec_done2: > + movq %r9,%rdx > + movq %rbp,%rcx > + movl %r10d,%eax > + > + movups (%rdi),%xmm2 > + xorps %xmm11,%xmm2 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_13: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_13 > +.byte 102,15,56,223,209 > + xorps %xmm11,%xmm2 > + movups %xmm2,(%rsi) > + > +.Lxts_dec_steal: > + movzbl 16(%rdi),%eax > + movzbl (%rsi),%ecx > + leaq 1(%rdi),%rdi > + movb %al,(%rsi) > + movb %cl,16(%rsi) > + leaq 1(%rsi),%rsi > + subq $1,%rdx > + jnz .Lxts_dec_steal > + > + subq %r9,%rsi > + movq %rbp,%rcx > + movl %r10d,%eax > + > + movups (%rsi),%xmm2 > + xorps %xmm10,%xmm2 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_14: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_14 > +.byte 102,15,56,223,209 > + xorps %xmm10,%xmm2 > + movups %xmm2,(%rsi) > + > +.Lxts_dec_ret: > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + movaps %xmm0,0(%rsp) > + pxor %xmm8,%xmm8 > + movaps %xmm0,16(%rsp) > + pxor %xmm9,%xmm9 > + movaps %xmm0,32(%rsp) > + pxor %xmm10,%xmm10 > + movaps %xmm0,48(%rsp) > + pxor %xmm11,%xmm11 > + movaps %xmm0,64(%rsp) > + pxor %xmm12,%xmm12 > + movaps %xmm0,80(%rsp) > + pxor %xmm13,%xmm13 > + movaps %xmm0,96(%rsp) > + pxor %xmm14,%xmm14 > + pxor %xmm15,%xmm15 > + movq -8(%r11),%rbp > +.cfi_restore %rbp > + leaq (%r11),%rsp > +.cfi_def_cfa_register %rsp > +.Lxts_dec_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_xts_decrypt,.-aesni_xts_decrypt > +.globl aesni_ocb_encrypt > +.type aesni_ocb_encrypt,@function > +.align 32 > +aesni_ocb_encrypt: > +.cfi_startproc > + leaq (%rsp),%rax > + pushq %rbx > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r14,-48 > + movq 8(%rax),%rbx > + movq 8+8(%rax),%rbp > + > + movl 240(%rcx),%r10d > + movq %rcx,%r11 > + shll $4,%r10d > + movups (%rcx),%xmm9 > + movups 16(%rcx,%r10,1),%xmm1 > + > + movdqu (%r9),%xmm15 > + pxor %xmm1,%xmm9 > + pxor %xmm1,%xmm15 > + > + movl $16+32,%eax > + leaq 32(%r11,%r10,1),%rcx > + movups 16(%r11),%xmm1 > + subq %r10,%rax > + movq %rax,%r10 > + > + movdqu (%rbx),%xmm10 > + movdqu (%rbp),%xmm8 > + > + testq $1,%r8 > + jnz .Locb_enc_odd > + > + bsfq %r8,%r12 > + addq $1,%r8 > + shlq $4,%r12 > + movdqu (%rbx,%r12,1),%xmm7 > + movdqu (%rdi),%xmm2 > + leaq 16(%rdi),%rdi > + > + call __ocb_encrypt1 > + > + movdqa %xmm7,%xmm15 > + movups %xmm2,(%rsi) > + leaq 16(%rsi),%rsi > + subq $1,%rdx > + jz .Locb_enc_done > + > +.Locb_enc_odd: > + leaq 1(%r8),%r12 > + leaq 3(%r8),%r13 > + leaq 5(%r8),%r14 > + leaq 6(%r8),%r8 > + bsfq %r12,%r12 > + bsfq %r13,%r13 > + bsfq %r14,%r14 > + shlq $4,%r12 > + shlq $4,%r13 > + shlq $4,%r14 > + > + subq $6,%rdx > + jc .Locb_enc_short > + jmp .Locb_enc_grandloop > + > +.align 32 > +.Locb_enc_grandloop: > + movdqu 0(%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + movdqu 48(%rdi),%xmm5 > + movdqu 64(%rdi),%xmm6 > + movdqu 80(%rdi),%xmm7 > + leaq 96(%rdi),%rdi > + > + call __ocb_encrypt6 > + > + movups %xmm2,0(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + movups %xmm7,80(%rsi) > + leaq 96(%rsi),%rsi > + subq $6,%rdx > + jnc .Locb_enc_grandloop > + > +.Locb_enc_short: > + addq $6,%rdx > + jz .Locb_enc_done > + > + movdqu 0(%rdi),%xmm2 > + cmpq $2,%rdx > + jb .Locb_enc_one > + movdqu 16(%rdi),%xmm3 > + je .Locb_enc_two > + > + movdqu 32(%rdi),%xmm4 > + cmpq $4,%rdx > + jb .Locb_enc_three > + movdqu 48(%rdi),%xmm5 > + je .Locb_enc_four > + > + movdqu 64(%rdi),%xmm6 > + pxor %xmm7,%xmm7 > + > + call __ocb_encrypt6 > + > + movdqa %xmm14,%xmm15 > + movups %xmm2,0(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + movups %xmm6,64(%rsi) > + > + jmp .Locb_enc_done > + > +.align 16 > +.Locb_enc_one: > + movdqa %xmm10,%xmm7 > + > + call __ocb_encrypt1 > + > + movdqa %xmm7,%xmm15 > + movups %xmm2,0(%rsi) > + jmp .Locb_enc_done > + > +.align 16 > +.Locb_enc_two: > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + > + call __ocb_encrypt4 > + > + movdqa %xmm11,%xmm15 > + movups %xmm2,0(%rsi) > + movups %xmm3,16(%rsi) > + > + jmp .Locb_enc_done > + > +.align 16 > +.Locb_enc_three: > + pxor %xmm5,%xmm5 > + > + call __ocb_encrypt4 > + > + movdqa %xmm12,%xmm15 > + movups %xmm2,0(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + > + jmp .Locb_enc_done > + > +.align 16 > +.Locb_enc_four: > + call __ocb_encrypt4 > + > + movdqa %xmm13,%xmm15 > + movups %xmm2,0(%rsi) > + movups %xmm3,16(%rsi) > + movups %xmm4,32(%rsi) > + movups %xmm5,48(%rsi) > + > +.Locb_enc_done: > + pxor %xmm0,%xmm15 > + movdqu %xmm8,(%rbp) > + movdqu %xmm15,(%r9) > + > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > + pxor %xmm10,%xmm10 > + pxor %xmm11,%xmm11 > + pxor %xmm12,%xmm12 > + pxor %xmm13,%xmm13 > + pxor %xmm14,%xmm14 > + pxor %xmm15,%xmm15 > + leaq 40(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movq -40(%rax),%r14 > +.cfi_restore %r14 > + movq -32(%rax),%r13 > +.cfi_restore %r13 > + movq -24(%rax),%r12 > +.cfi_restore %r12 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Locb_enc_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ocb_encrypt,.-aesni_ocb_encrypt > + > +.type __ocb_encrypt6,@function > +.align 32 > +__ocb_encrypt6: > +.cfi_startproc > + pxor %xmm9,%xmm15 > + movdqu (%rbx,%r12,1),%xmm11 > + movdqa %xmm10,%xmm12 > + movdqu (%rbx,%r13,1),%xmm13 > + movdqa %xmm10,%xmm14 > + pxor %xmm15,%xmm10 > + movdqu (%rbx,%r14,1),%xmm15 > + pxor %xmm10,%xmm11 > + pxor %xmm2,%xmm8 > + pxor %xmm10,%xmm2 > + pxor %xmm11,%xmm12 > + pxor %xmm3,%xmm8 > + pxor %xmm11,%xmm3 > + pxor %xmm12,%xmm13 > + pxor %xmm4,%xmm8 > + pxor %xmm12,%xmm4 > + pxor %xmm13,%xmm14 > + pxor %xmm5,%xmm8 > + pxor %xmm13,%xmm5 > + pxor %xmm14,%xmm15 > + pxor %xmm6,%xmm8 > + pxor %xmm14,%xmm6 > + pxor %xmm7,%xmm8 > + pxor %xmm15,%xmm7 > + movups 32(%r11),%xmm0 > + > + leaq 1(%r8),%r12 > + leaq 3(%r8),%r13 > + leaq 5(%r8),%r14 > + addq $6,%r8 > + pxor %xmm9,%xmm10 > + bsfq %r12,%r12 > + bsfq %r13,%r13 > + bsfq %r14,%r14 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + pxor %xmm9,%xmm11 > + pxor %xmm9,%xmm12 > +.byte 102,15,56,220,241 > + pxor %xmm9,%xmm13 > + pxor %xmm9,%xmm14 > +.byte 102,15,56,220,249 > + movups 48(%r11),%xmm1 > + pxor %xmm9,%xmm15 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups 64(%r11),%xmm0 > + shlq $4,%r12 > + shlq $4,%r13 > + jmp .Locb_enc_loop6 > + > +.align 32 > +.Locb_enc_loop6: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > +.byte 102,15,56,220,240 > +.byte 102,15,56,220,248 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_enc_loop6 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > +.byte 102,15,56,220,241 > +.byte 102,15,56,220,249 > + movups 16(%r11),%xmm1 > + shlq $4,%r14 > + > +.byte 102,65,15,56,221,210 > + movdqu (%rbx),%xmm10 > + movq %r10,%rax > +.byte 102,65,15,56,221,219 > +.byte 102,65,15,56,221,228 > +.byte 102,65,15,56,221,237 > +.byte 102,65,15,56,221,246 > +.byte 102,65,15,56,221,255 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_encrypt6,.-__ocb_encrypt6 > + > +.type __ocb_encrypt4,@function > +.align 32 > +__ocb_encrypt4: > +.cfi_startproc > + pxor %xmm9,%xmm15 > + movdqu (%rbx,%r12,1),%xmm11 > + movdqa %xmm10,%xmm12 > + movdqu (%rbx,%r13,1),%xmm13 > + pxor %xmm15,%xmm10 > + pxor %xmm10,%xmm11 > + pxor %xmm2,%xmm8 > + pxor %xmm10,%xmm2 > + pxor %xmm11,%xmm12 > + pxor %xmm3,%xmm8 > + pxor %xmm11,%xmm3 > + pxor %xmm12,%xmm13 > + pxor %xmm4,%xmm8 > + pxor %xmm12,%xmm4 > + pxor %xmm5,%xmm8 > + pxor %xmm13,%xmm5 > + movups 32(%r11),%xmm0 > + > + pxor %xmm9,%xmm10 > + pxor %xmm9,%xmm11 > + pxor %xmm9,%xmm12 > + pxor %xmm9,%xmm13 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 48(%r11),%xmm1 > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups 64(%r11),%xmm0 > + jmp .Locb_enc_loop4 > + > +.align 32 > +.Locb_enc_loop4: > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,220,208 > +.byte 102,15,56,220,216 > +.byte 102,15,56,220,224 > +.byte 102,15,56,220,232 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_enc_loop4 > + > +.byte 102,15,56,220,209 > +.byte 102,15,56,220,217 > +.byte 102,15,56,220,225 > +.byte 102,15,56,220,233 > + movups 16(%r11),%xmm1 > + movq %r10,%rax > + > +.byte 102,65,15,56,221,210 > +.byte 102,65,15,56,221,219 > +.byte 102,65,15,56,221,228 > +.byte 102,65,15,56,221,237 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_encrypt4,.-__ocb_encrypt4 > + > +.type __ocb_encrypt1,@function > +.align 32 > +__ocb_encrypt1: > +.cfi_startproc > + pxor %xmm15,%xmm7 > + pxor %xmm9,%xmm7 > + pxor %xmm2,%xmm8 > + pxor %xmm7,%xmm2 > + movups 32(%r11),%xmm0 > + > +.byte 102,15,56,220,209 > + movups 48(%r11),%xmm1 > + pxor %xmm9,%xmm7 > + > +.byte 102,15,56,220,208 > + movups 64(%r11),%xmm0 > + jmp .Locb_enc_loop1 > + > +.align 32 > +.Locb_enc_loop1: > +.byte 102,15,56,220,209 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,220,208 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_enc_loop1 > + > +.byte 102,15,56,220,209 > + movups 16(%r11),%xmm1 > + movq %r10,%rax > + > +.byte 102,15,56,221,215 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_encrypt1,.-__ocb_encrypt1 > + > +.globl aesni_ocb_decrypt > +.type aesni_ocb_decrypt,@function > +.align 32 > +aesni_ocb_decrypt: > +.cfi_startproc > + leaq (%rsp),%rax > + pushq %rbx > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r14,-48 > + movq 8(%rax),%rbx > + movq 8+8(%rax),%rbp > + > + movl 240(%rcx),%r10d > + movq %rcx,%r11 > + shll $4,%r10d > + movups (%rcx),%xmm9 > + movups 16(%rcx,%r10,1),%xmm1 > + > + movdqu (%r9),%xmm15 > + pxor %xmm1,%xmm9 > + pxor %xmm1,%xmm15 > + > + movl $16+32,%eax > + leaq 32(%r11,%r10,1),%rcx > + movups 16(%r11),%xmm1 > + subq %r10,%rax > + movq %rax,%r10 > + > + movdqu (%rbx),%xmm10 > + movdqu (%rbp),%xmm8 > + > + testq $1,%r8 > + jnz .Locb_dec_odd > + > + bsfq %r8,%r12 > + addq $1,%r8 > + shlq $4,%r12 > + movdqu (%rbx,%r12,1),%xmm7 > + movdqu (%rdi),%xmm2 > + leaq 16(%rdi),%rdi > + > + call __ocb_decrypt1 > + > + movdqa %xmm7,%xmm15 > + movups %xmm2,(%rsi) > + xorps %xmm2,%xmm8 > + leaq 16(%rsi),%rsi > + subq $1,%rdx > + jz .Locb_dec_done > + > +.Locb_dec_odd: > + leaq 1(%r8),%r12 > + leaq 3(%r8),%r13 > + leaq 5(%r8),%r14 > + leaq 6(%r8),%r8 > + bsfq %r12,%r12 > + bsfq %r13,%r13 > + bsfq %r14,%r14 > + shlq $4,%r12 > + shlq $4,%r13 > + shlq $4,%r14 > + > + subq $6,%rdx > + jc .Locb_dec_short > + jmp .Locb_dec_grandloop > + > +.align 32 > +.Locb_dec_grandloop: > + movdqu 0(%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqu 32(%rdi),%xmm4 > + movdqu 48(%rdi),%xmm5 > + movdqu 64(%rdi),%xmm6 > + movdqu 80(%rdi),%xmm7 > + leaq 96(%rdi),%rdi > + > + call __ocb_decrypt6 > + > + movups %xmm2,0(%rsi) > + pxor %xmm2,%xmm8 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm8 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm8 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm8 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm8 > + movups %xmm7,80(%rsi) > + pxor %xmm7,%xmm8 > + leaq 96(%rsi),%rsi > + subq $6,%rdx > + jnc .Locb_dec_grandloop > + > +.Locb_dec_short: > + addq $6,%rdx > + jz .Locb_dec_done > + > + movdqu 0(%rdi),%xmm2 > + cmpq $2,%rdx > + jb .Locb_dec_one > + movdqu 16(%rdi),%xmm3 > + je .Locb_dec_two > + > + movdqu 32(%rdi),%xmm4 > + cmpq $4,%rdx > + jb .Locb_dec_three > + movdqu 48(%rdi),%xmm5 > + je .Locb_dec_four > + > + movdqu 64(%rdi),%xmm6 > + pxor %xmm7,%xmm7 > + > + call __ocb_decrypt6 > + > + movdqa %xmm14,%xmm15 > + movups %xmm2,0(%rsi) > + pxor %xmm2,%xmm8 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm8 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm8 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm8 > + movups %xmm6,64(%rsi) > + pxor %xmm6,%xmm8 > + > + jmp .Locb_dec_done > + > +.align 16 > +.Locb_dec_one: > + movdqa %xmm10,%xmm7 > + > + call __ocb_decrypt1 > + > + movdqa %xmm7,%xmm15 > + movups %xmm2,0(%rsi) > + xorps %xmm2,%xmm8 > + jmp .Locb_dec_done > + > +.align 16 > +.Locb_dec_two: > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + > + call __ocb_decrypt4 > + > + movdqa %xmm11,%xmm15 > + movups %xmm2,0(%rsi) > + xorps %xmm2,%xmm8 > + movups %xmm3,16(%rsi) > + xorps %xmm3,%xmm8 > + > + jmp .Locb_dec_done > + > +.align 16 > +.Locb_dec_three: > + pxor %xmm5,%xmm5 > + > + call __ocb_decrypt4 > + > + movdqa %xmm12,%xmm15 > + movups %xmm2,0(%rsi) > + xorps %xmm2,%xmm8 > + movups %xmm3,16(%rsi) > + xorps %xmm3,%xmm8 > + movups %xmm4,32(%rsi) > + xorps %xmm4,%xmm8 > + > + jmp .Locb_dec_done > + > +.align 16 > +.Locb_dec_four: > + call __ocb_decrypt4 > + > + movdqa %xmm13,%xmm15 > + movups %xmm2,0(%rsi) > + pxor %xmm2,%xmm8 > + movups %xmm3,16(%rsi) > + pxor %xmm3,%xmm8 > + movups %xmm4,32(%rsi) > + pxor %xmm4,%xmm8 > + movups %xmm5,48(%rsi) > + pxor %xmm5,%xmm8 > + > +.Locb_dec_done: > + pxor %xmm0,%xmm15 > + movdqu %xmm8,(%rbp) > + movdqu %xmm15,(%r9) > + > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > + pxor %xmm10,%xmm10 > + pxor %xmm11,%xmm11 > + pxor %xmm12,%xmm12 > + pxor %xmm13,%xmm13 > + pxor %xmm14,%xmm14 > + pxor %xmm15,%xmm15 > + leaq 40(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movq -40(%rax),%r14 > +.cfi_restore %r14 > + movq -32(%rax),%r13 > +.cfi_restore %r13 > + movq -24(%rax),%r12 > +.cfi_restore %r12 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Locb_dec_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_ocb_decrypt,.-aesni_ocb_decrypt > + > +.type __ocb_decrypt6,@function > +.align 32 > +__ocb_decrypt6: > +.cfi_startproc > + pxor %xmm9,%xmm15 > + movdqu (%rbx,%r12,1),%xmm11 > + movdqa %xmm10,%xmm12 > + movdqu (%rbx,%r13,1),%xmm13 > + movdqa %xmm10,%xmm14 > + pxor %xmm15,%xmm10 > + movdqu (%rbx,%r14,1),%xmm15 > + pxor %xmm10,%xmm11 > + pxor %xmm10,%xmm2 > + pxor %xmm11,%xmm12 > + pxor %xmm11,%xmm3 > + pxor %xmm12,%xmm13 > + pxor %xmm12,%xmm4 > + pxor %xmm13,%xmm14 > + pxor %xmm13,%xmm5 > + pxor %xmm14,%xmm15 > + pxor %xmm14,%xmm6 > + pxor %xmm15,%xmm7 > + movups 32(%r11),%xmm0 > + > + leaq 1(%r8),%r12 > + leaq 3(%r8),%r13 > + leaq 5(%r8),%r14 > + addq $6,%r8 > + pxor %xmm9,%xmm10 > + bsfq %r12,%r12 > + bsfq %r13,%r13 > + bsfq %r14,%r14 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + pxor %xmm9,%xmm11 > + pxor %xmm9,%xmm12 > +.byte 102,15,56,222,241 > + pxor %xmm9,%xmm13 > + pxor %xmm9,%xmm14 > +.byte 102,15,56,222,249 > + movups 48(%r11),%xmm1 > + pxor %xmm9,%xmm15 > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > + movups 64(%r11),%xmm0 > + shlq $4,%r12 > + shlq $4,%r13 > + jmp .Locb_dec_loop6 > + > +.align 32 > +.Locb_dec_loop6: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_dec_loop6 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + movups 16(%r11),%xmm1 > + shlq $4,%r14 > + > +.byte 102,65,15,56,223,210 > + movdqu (%rbx),%xmm10 > + movq %r10,%rax > +.byte 102,65,15,56,223,219 > +.byte 102,65,15,56,223,228 > +.byte 102,65,15,56,223,237 > +.byte 102,65,15,56,223,246 > +.byte 102,65,15,56,223,255 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_decrypt6,.-__ocb_decrypt6 > + > +.type __ocb_decrypt4,@function > +.align 32 > +__ocb_decrypt4: > +.cfi_startproc > + pxor %xmm9,%xmm15 > + movdqu (%rbx,%r12,1),%xmm11 > + movdqa %xmm10,%xmm12 > + movdqu (%rbx,%r13,1),%xmm13 > + pxor %xmm15,%xmm10 > + pxor %xmm10,%xmm11 > + pxor %xmm10,%xmm2 > + pxor %xmm11,%xmm12 > + pxor %xmm11,%xmm3 > + pxor %xmm12,%xmm13 > + pxor %xmm12,%xmm4 > + pxor %xmm13,%xmm5 > + movups 32(%r11),%xmm0 > + > + pxor %xmm9,%xmm10 > + pxor %xmm9,%xmm11 > + pxor %xmm9,%xmm12 > + pxor %xmm9,%xmm13 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 48(%r11),%xmm1 > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups 64(%r11),%xmm0 > + jmp .Locb_dec_loop4 > + > +.align 32 > +.Locb_dec_loop4: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_dec_loop4 > + > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + movups 16(%r11),%xmm1 > + movq %r10,%rax > + > +.byte 102,65,15,56,223,210 > +.byte 102,65,15,56,223,219 > +.byte 102,65,15,56,223,228 > +.byte 102,65,15,56,223,237 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_decrypt4,.-__ocb_decrypt4 > + > +.type __ocb_decrypt1,@function > +.align 32 > +__ocb_decrypt1: > +.cfi_startproc > + pxor %xmm15,%xmm7 > + pxor %xmm9,%xmm7 > + pxor %xmm7,%xmm2 > + movups 32(%r11),%xmm0 > + > +.byte 102,15,56,222,209 > + movups 48(%r11),%xmm1 > + pxor %xmm9,%xmm7 > + > +.byte 102,15,56,222,208 > + movups 64(%r11),%xmm0 > + jmp .Locb_dec_loop1 > + > +.align 32 > +.Locb_dec_loop1: > +.byte 102,15,56,222,209 > + movups (%rcx,%rax,1),%xmm1 > + addq $32,%rax > + > +.byte 102,15,56,222,208 > + movups -16(%rcx,%rax,1),%xmm0 > + jnz .Locb_dec_loop1 > + > +.byte 102,15,56,222,209 > + movups 16(%r11),%xmm1 > + movq %r10,%rax > + > +.byte 102,15,56,223,215 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size __ocb_decrypt1,.-__ocb_decrypt1 > +.globl aesni_cbc_encrypt > +.type aesni_cbc_encrypt,@function > +.align 16 > +aesni_cbc_encrypt: > +.cfi_startproc > + testq %rdx,%rdx > + jz .Lcbc_ret > + > + movl 240(%rcx),%r10d > + movq %rcx,%r11 > + testl %r9d,%r9d > + jz .Lcbc_decrypt > + > + movups (%r8),%xmm2 > + movl %r10d,%eax > + cmpq $16,%rdx > + jb .Lcbc_enc_tail > + subq $16,%rdx > + jmp .Lcbc_enc_loop > +.align 16 > +.Lcbc_enc_loop: > + movups (%rdi),%xmm3 > + leaq 16(%rdi),%rdi > + > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + xorps %xmm0,%xmm3 > + leaq 32(%rcx),%rcx > + xorps %xmm3,%xmm2 > +.Loop_enc1_15: > +.byte 102,15,56,220,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_enc1_15 > +.byte 102,15,56,221,209 > + movl %r10d,%eax > + movq %r11,%rcx > + movups %xmm2,0(%rsi) > + leaq 16(%rsi),%rsi > + subq $16,%rdx > + jnc .Lcbc_enc_loop > + addq $16,%rdx > + jnz .Lcbc_enc_tail > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + movups %xmm2,(%r8) > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + jmp .Lcbc_ret > + > +.Lcbc_enc_tail: > + movq %rdx,%rcx > + xchgq %rdi,%rsi > +.long 0x9066A4F3 > + movl $16,%ecx > + subq %rdx,%rcx > + xorl %eax,%eax > +.long 0x9066AAF3 > + leaq -16(%rdi),%rdi > + movl %r10d,%eax > + movq %rdi,%rsi > + movq %r11,%rcx > + xorq %rdx,%rdx > + jmp .Lcbc_enc_loop > + > +.align 16 > +.Lcbc_decrypt: > + cmpq $16,%rdx > + jne .Lcbc_decrypt_bulk > + > + > + > + movdqu (%rdi),%xmm2 > + movdqu (%r8),%xmm3 > + movdqa %xmm2,%xmm4 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_16: > +.byte 102,15,56,222,209 > + decl %r10d > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_16 > +.byte 102,15,56,223,209 > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + movdqu %xmm4,(%r8) > + xorps %xmm3,%xmm2 > + pxor %xmm3,%xmm3 > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + jmp .Lcbc_ret > +.align 16 > +.Lcbc_decrypt_bulk: > + leaq (%rsp),%r11 > +.cfi_def_cfa_register %r11 > + pushq %rbp > +.cfi_offset %rbp,-16 > + subq $16,%rsp > + andq $-16,%rsp > + movq %rcx,%rbp > + movups (%r8),%xmm10 > + movl %r10d,%eax > + cmpq $0x50,%rdx > + jbe .Lcbc_dec_tail > + > + movups (%rcx),%xmm0 > + movdqu 0(%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqa %xmm2,%xmm11 > + movdqu 32(%rdi),%xmm4 > + movdqa %xmm3,%xmm12 > + movdqu 48(%rdi),%xmm5 > + movdqa %xmm4,%xmm13 > + movdqu 64(%rdi),%xmm6 > + movdqa %xmm5,%xmm14 > + movdqu 80(%rdi),%xmm7 > + movdqa %xmm6,%xmm15 > + movl OPENSSL_ia32cap_P+4(%rip),%r9d > + cmpq $0x70,%rdx > + jbe .Lcbc_dec_six_or_seven > + > + andl $71303168,%r9d > + subq $0x50,%rdx > + cmpl $4194304,%r9d > + je .Lcbc_dec_loop6_enter > + subq $0x20,%rdx > + leaq 112(%rcx),%rcx > + jmp .Lcbc_dec_loop8_enter > +.align 16 > +.Lcbc_dec_loop8: > + movups %xmm9,(%rsi) > + leaq 16(%rsi),%rsi > +.Lcbc_dec_loop8_enter: > + movdqu 96(%rdi),%xmm8 > + pxor %xmm0,%xmm2 > + movdqu 112(%rdi),%xmm9 > + pxor %xmm0,%xmm3 > + movups 16-112(%rcx),%xmm1 > + pxor %xmm0,%xmm4 > + movq $-1,%rbp > + cmpq $0x70,%rdx > + pxor %xmm0,%xmm5 > + pxor %xmm0,%xmm6 > + pxor %xmm0,%xmm7 > + pxor %xmm0,%xmm8 > + > +.byte 102,15,56,222,209 > + pxor %xmm0,%xmm9 > + movups 32-112(%rcx),%xmm0 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > + adcq $0,%rbp > + andq $128,%rbp > +.byte 102,68,15,56,222,201 > + addq %rdi,%rbp > + movups 48-112(%rcx),%xmm1 > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 64-112(%rcx),%xmm0 > + nop > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movups 80-112(%rcx),%xmm1 > + nop > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 96-112(%rcx),%xmm0 > + nop > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movups 112-112(%rcx),%xmm1 > + nop > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 128-112(%rcx),%xmm0 > + nop > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movups 144-112(%rcx),%xmm1 > + cmpl $11,%eax > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 160-112(%rcx),%xmm0 > + jb .Lcbc_dec_done > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movups 176-112(%rcx),%xmm1 > + nop > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 192-112(%rcx),%xmm0 > + je .Lcbc_dec_done > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movups 208-112(%rcx),%xmm1 > + nop > +.byte 102,15,56,222,208 > +.byte 102,15,56,222,216 > +.byte 102,15,56,222,224 > +.byte 102,15,56,222,232 > +.byte 102,15,56,222,240 > +.byte 102,15,56,222,248 > +.byte 102,68,15,56,222,192 > +.byte 102,68,15,56,222,200 > + movups 224-112(%rcx),%xmm0 > + jmp .Lcbc_dec_done > +.align 16 > +.Lcbc_dec_done: > +.byte 102,15,56,222,209 > +.byte 102,15,56,222,217 > + pxor %xmm0,%xmm10 > + pxor %xmm0,%xmm11 > +.byte 102,15,56,222,225 > +.byte 102,15,56,222,233 > + pxor %xmm0,%xmm12 > + pxor %xmm0,%xmm13 > +.byte 102,15,56,222,241 > +.byte 102,15,56,222,249 > + pxor %xmm0,%xmm14 > + pxor %xmm0,%xmm15 > +.byte 102,68,15,56,222,193 > +.byte 102,68,15,56,222,201 > + movdqu 80(%rdi),%xmm1 > + > +.byte 102,65,15,56,223,210 > + movdqu 96(%rdi),%xmm10 > + pxor %xmm0,%xmm1 > +.byte 102,65,15,56,223,219 > + pxor %xmm0,%xmm10 > + movdqu 112(%rdi),%xmm0 > +.byte 102,65,15,56,223,228 > + leaq 128(%rdi),%rdi > + movdqu 0(%rbp),%xmm11 > +.byte 102,65,15,56,223,237 > +.byte 102,65,15,56,223,246 > + movdqu 16(%rbp),%xmm12 > + movdqu 32(%rbp),%xmm13 > +.byte 102,65,15,56,223,255 > +.byte 102,68,15,56,223,193 > + movdqu 48(%rbp),%xmm14 > + movdqu 64(%rbp),%xmm15 > +.byte 102,69,15,56,223,202 > + movdqa %xmm0,%xmm10 > + movdqu 80(%rbp),%xmm1 > + movups -112(%rcx),%xmm0 > + > + movups %xmm2,(%rsi) > + movdqa %xmm11,%xmm2 > + movups %xmm3,16(%rsi) > + movdqa %xmm12,%xmm3 > + movups %xmm4,32(%rsi) > + movdqa %xmm13,%xmm4 > + movups %xmm5,48(%rsi) > + movdqa %xmm14,%xmm5 > + movups %xmm6,64(%rsi) > + movdqa %xmm15,%xmm6 > + movups %xmm7,80(%rsi) > + movdqa %xmm1,%xmm7 > + movups %xmm8,96(%rsi) > + leaq 112(%rsi),%rsi > + > + subq $0x80,%rdx > + ja .Lcbc_dec_loop8 > + > + movaps %xmm9,%xmm2 > + leaq -112(%rcx),%rcx > + addq $0x70,%rdx > + jle .Lcbc_dec_clear_tail_collected > + movups %xmm9,(%rsi) > + leaq 16(%rsi),%rsi > + cmpq $0x50,%rdx > + jbe .Lcbc_dec_tail > + > + movaps %xmm11,%xmm2 > +.Lcbc_dec_six_or_seven: > + cmpq $0x60,%rdx > + ja .Lcbc_dec_seven > + > + movaps %xmm7,%xmm8 > + call _aesni_decrypt6 > + pxor %xmm10,%xmm2 > + movaps %xmm8,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + pxor %xmm14,%xmm6 > + movdqu %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + pxor %xmm15,%xmm7 > + movdqu %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + leaq 80(%rsi),%rsi > + movdqa %xmm7,%xmm2 > + pxor %xmm7,%xmm7 > + jmp .Lcbc_dec_tail_collected > + > +.align 16 > +.Lcbc_dec_seven: > + movups 96(%rdi),%xmm8 > + xorps %xmm9,%xmm9 > + call _aesni_decrypt8 > + movups 80(%rdi),%xmm9 > + pxor %xmm10,%xmm2 > + movups 96(%rdi),%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + pxor %xmm14,%xmm6 > + movdqu %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + pxor %xmm15,%xmm7 > + movdqu %xmm6,64(%rsi) > + pxor %xmm6,%xmm6 > + pxor %xmm9,%xmm8 > + movdqu %xmm7,80(%rsi) > + pxor %xmm7,%xmm7 > + leaq 96(%rsi),%rsi > + movdqa %xmm8,%xmm2 > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > + jmp .Lcbc_dec_tail_collected > + > +.align 16 > +.Lcbc_dec_loop6: > + movups %xmm7,(%rsi) > + leaq 16(%rsi),%rsi > + movdqu 0(%rdi),%xmm2 > + movdqu 16(%rdi),%xmm3 > + movdqa %xmm2,%xmm11 > + movdqu 32(%rdi),%xmm4 > + movdqa %xmm3,%xmm12 > + movdqu 48(%rdi),%xmm5 > + movdqa %xmm4,%xmm13 > + movdqu 64(%rdi),%xmm6 > + movdqa %xmm5,%xmm14 > + movdqu 80(%rdi),%xmm7 > + movdqa %xmm6,%xmm15 > +.Lcbc_dec_loop6_enter: > + leaq 96(%rdi),%rdi > + movdqa %xmm7,%xmm8 > + > + call _aesni_decrypt6 > + > + pxor %xmm10,%xmm2 > + movdqa %xmm8,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm14,%xmm6 > + movq %rbp,%rcx > + movdqu %xmm5,48(%rsi) > + pxor %xmm15,%xmm7 > + movl %r10d,%eax > + movdqu %xmm6,64(%rsi) > + leaq 80(%rsi),%rsi > + subq $0x60,%rdx > + ja .Lcbc_dec_loop6 > + > + movdqa %xmm7,%xmm2 > + addq $0x50,%rdx > + jle .Lcbc_dec_clear_tail_collected > + movups %xmm7,(%rsi) > + leaq 16(%rsi),%rsi > + > +.Lcbc_dec_tail: > + movups (%rdi),%xmm2 > + subq $0x10,%rdx > + jbe .Lcbc_dec_one > + > + movups 16(%rdi),%xmm3 > + movaps %xmm2,%xmm11 > + subq $0x10,%rdx > + jbe .Lcbc_dec_two > + > + movups 32(%rdi),%xmm4 > + movaps %xmm3,%xmm12 > + subq $0x10,%rdx > + jbe .Lcbc_dec_three > + > + movups 48(%rdi),%xmm5 > + movaps %xmm4,%xmm13 > + subq $0x10,%rdx > + jbe .Lcbc_dec_four > + > + movups 64(%rdi),%xmm6 > + movaps %xmm5,%xmm14 > + movaps %xmm6,%xmm15 > + xorps %xmm7,%xmm7 > + call _aesni_decrypt6 > + pxor %xmm10,%xmm2 > + movaps %xmm15,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + pxor %xmm14,%xmm6 > + movdqu %xmm5,48(%rsi) > + pxor %xmm5,%xmm5 > + leaq 64(%rsi),%rsi > + movdqa %xmm6,%xmm2 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + subq $0x10,%rdx > + jmp .Lcbc_dec_tail_collected > + > +.align 16 > +.Lcbc_dec_one: > + movaps %xmm2,%xmm11 > + movups (%rcx),%xmm0 > + movups 16(%rcx),%xmm1 > + leaq 32(%rcx),%rcx > + xorps %xmm0,%xmm2 > +.Loop_dec1_17: > +.byte 102,15,56,222,209 > + decl %eax > + movups (%rcx),%xmm1 > + leaq 16(%rcx),%rcx > + jnz .Loop_dec1_17 > +.byte 102,15,56,223,209 > + xorps %xmm10,%xmm2 > + movaps %xmm11,%xmm10 > + jmp .Lcbc_dec_tail_collected > +.align 16 > +.Lcbc_dec_two: > + movaps %xmm3,%xmm12 > + call _aesni_decrypt2 > + pxor %xmm10,%xmm2 > + movaps %xmm12,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + movdqa %xmm3,%xmm2 > + pxor %xmm3,%xmm3 > + leaq 16(%rsi),%rsi > + jmp .Lcbc_dec_tail_collected > +.align 16 > +.Lcbc_dec_three: > + movaps %xmm4,%xmm13 > + call _aesni_decrypt3 > + pxor %xmm10,%xmm2 > + movaps %xmm13,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + movdqa %xmm4,%xmm2 > + pxor %xmm4,%xmm4 > + leaq 32(%rsi),%rsi > + jmp .Lcbc_dec_tail_collected > +.align 16 > +.Lcbc_dec_four: > + movaps %xmm5,%xmm14 > + call _aesni_decrypt4 > + pxor %xmm10,%xmm2 > + movaps %xmm14,%xmm10 > + pxor %xmm11,%xmm3 > + movdqu %xmm2,(%rsi) > + pxor %xmm12,%xmm4 > + movdqu %xmm3,16(%rsi) > + pxor %xmm3,%xmm3 > + pxor %xmm13,%xmm5 > + movdqu %xmm4,32(%rsi) > + pxor %xmm4,%xmm4 > + movdqa %xmm5,%xmm2 > + pxor %xmm5,%xmm5 > + leaq 48(%rsi),%rsi > + jmp .Lcbc_dec_tail_collected > + > +.align 16 > +.Lcbc_dec_clear_tail_collected: > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > +.Lcbc_dec_tail_collected: > + movups %xmm10,(%r8) > + andq $15,%rdx > + jnz .Lcbc_dec_tail_partial > + movups %xmm2,(%rsi) > + pxor %xmm2,%xmm2 > + jmp .Lcbc_dec_ret > +.align 16 > +.Lcbc_dec_tail_partial: > + movaps %xmm2,(%rsp) > + pxor %xmm2,%xmm2 > + movq $16,%rcx > + movq %rsi,%rdi > + subq %rdx,%rcx > + leaq (%rsp),%rsi > +.long 0x9066A4F3 > + movdqa %xmm2,(%rsp) > + > +.Lcbc_dec_ret: > + xorps %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + movq -8(%r11),%rbp > +.cfi_restore %rbp > + leaq (%r11),%rsp > +.cfi_def_cfa_register %rsp > +.Lcbc_ret: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_cbc_encrypt,.-aesni_cbc_encrypt > +.globl aesni_set_decrypt_key > +.type aesni_set_decrypt_key,@function > +.align 16 > +aesni_set_decrypt_key: > +.cfi_startproc > +.byte 0x48,0x83,0xEC,0x08 > +.cfi_adjust_cfa_offset 8 > + call __aesni_set_encrypt_key > + shll $4,%esi > + testl %eax,%eax > + jnz .Ldec_key_ret > + leaq 16(%rdx,%rsi,1),%rdi > + > + movups (%rdx),%xmm0 > + movups (%rdi),%xmm1 > + movups %xmm0,(%rdi) > + movups %xmm1,(%rdx) > + leaq 16(%rdx),%rdx > + leaq -16(%rdi),%rdi > + > +.Ldec_key_inverse: > + movups (%rdx),%xmm0 > + movups (%rdi),%xmm1 > +.byte 102,15,56,219,192 > +.byte 102,15,56,219,201 > + leaq 16(%rdx),%rdx > + leaq -16(%rdi),%rdi > + movups %xmm0,16(%rdi) > + movups %xmm1,-16(%rdx) > + cmpq %rdx,%rdi > + ja .Ldec_key_inverse > + > + movups (%rdx),%xmm0 > +.byte 102,15,56,219,192 > + pxor %xmm1,%xmm1 > + movups %xmm0,(%rdi) > + pxor %xmm0,%xmm0 > +.Ldec_key_ret: > + addq $8,%rsp > +.cfi_adjust_cfa_offset -8 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.LSEH_end_set_decrypt_key: > +.size aesni_set_decrypt_key,.-aesni_set_decrypt_key > +.globl aesni_set_encrypt_key > +.type aesni_set_encrypt_key,@function > +.align 16 > +aesni_set_encrypt_key: > +__aesni_set_encrypt_key: > +.cfi_startproc > +.byte 0x48,0x83,0xEC,0x08 > +.cfi_adjust_cfa_offset 8 > + movq $-1,%rax > + testq %rdi,%rdi > + jz .Lenc_key_ret > + testq %rdx,%rdx > + jz .Lenc_key_ret > + > + movl $268437504,%r10d > + movups (%rdi),%xmm0 > + xorps %xmm4,%xmm4 > + andl OPENSSL_ia32cap_P+4(%rip),%r10d > + leaq 16(%rdx),%rax > + cmpl $256,%esi > + je .L14rounds > + cmpl $192,%esi > + je .L12rounds > + cmpl $128,%esi > + jne .Lbad_keybits > + > +.L10rounds: > + movl $9,%esi > + cmpl $268435456,%r10d > + je .L10rounds_alt > + > + movups %xmm0,(%rdx) > +.byte 102,15,58,223,200,1 > + call .Lkey_expansion_128_cold > +.byte 102,15,58,223,200,2 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,4 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,8 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,16 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,32 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,64 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,128 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,27 > + call .Lkey_expansion_128 > +.byte 102,15,58,223,200,54 > + call .Lkey_expansion_128 > + movups %xmm0,(%rax) > + movl %esi,80(%rax) > + xorl %eax,%eax > + jmp .Lenc_key_ret > + > +.align 16 > +.L10rounds_alt: > + movdqa .Lkey_rotate(%rip),%xmm5 > + movl $8,%r10d > + movdqa .Lkey_rcon1(%rip),%xmm4 > + movdqa %xmm0,%xmm2 > + movdqu %xmm0,(%rdx) > + jmp .Loop_key128 > + > +.align 16 > +.Loop_key128: > +.byte 102,15,56,0,197 > +.byte 102,15,56,221,196 > + pslld $1,%xmm4 > + leaq 16(%rax),%rax > + > + movdqa %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm3,%xmm2 > + > + pxor %xmm2,%xmm0 > + movdqu %xmm0,-16(%rax) > + movdqa %xmm0,%xmm2 > + > + decl %r10d > + jnz .Loop_key128 > + > + movdqa .Lkey_rcon1b(%rip),%xmm4 > + > +.byte 102,15,56,0,197 > +.byte 102,15,56,221,196 > + pslld $1,%xmm4 > + > + movdqa %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm3,%xmm2 > + > + pxor %xmm2,%xmm0 > + movdqu %xmm0,(%rax) > + > + movdqa %xmm0,%xmm2 > +.byte 102,15,56,0,197 > +.byte 102,15,56,221,196 > + > + movdqa %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm2,%xmm3 > + pslldq $4,%xmm2 > + pxor %xmm3,%xmm2 > + > + pxor %xmm2,%xmm0 > + movdqu %xmm0,16(%rax) > + > + movl %esi,96(%rax) > + xorl %eax,%eax > + jmp .Lenc_key_ret > + > +.align 16 > +.L12rounds: > + movq 16(%rdi),%xmm2 > + movl $11,%esi > + cmpl $268435456,%r10d > + je .L12rounds_alt > + > + movups %xmm0,(%rdx) > +.byte 102,15,58,223,202,1 > + call .Lkey_expansion_192a_cold > +.byte 102,15,58,223,202,2 > + call .Lkey_expansion_192b > +.byte 102,15,58,223,202,4 > + call .Lkey_expansion_192a > +.byte 102,15,58,223,202,8 > + call .Lkey_expansion_192b > +.byte 102,15,58,223,202,16 > + call .Lkey_expansion_192a > +.byte 102,15,58,223,202,32 > + call .Lkey_expansion_192b > +.byte 102,15,58,223,202,64 > + call .Lkey_expansion_192a > +.byte 102,15,58,223,202,128 > + call .Lkey_expansion_192b > + movups %xmm0,(%rax) > + movl %esi,48(%rax) > + xorq %rax,%rax > + jmp .Lenc_key_ret > + > +.align 16 > +.L12rounds_alt: > + movdqa .Lkey_rotate192(%rip),%xmm5 > + movdqa .Lkey_rcon1(%rip),%xmm4 > + movl $8,%r10d > + movdqu %xmm0,(%rdx) > + jmp .Loop_key192 > + > +.align 16 > +.Loop_key192: > + movq %xmm2,0(%rax) > + movdqa %xmm2,%xmm1 > +.byte 102,15,56,0,213 > +.byte 102,15,56,221,212 > + pslld $1,%xmm4 > + leaq 24(%rax),%rax > + > + movdqa %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm3,%xmm0 > + > + pshufd $0xff,%xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + pslldq $4,%xmm1 > + pxor %xmm1,%xmm3 > + > + pxor %xmm2,%xmm0 > + pxor %xmm3,%xmm2 > + movdqu %xmm0,-16(%rax) > + > + decl %r10d > + jnz .Loop_key192 > + > + movl %esi,32(%rax) > + xorl %eax,%eax > + jmp .Lenc_key_ret > + > +.align 16 > +.L14rounds: > + movups 16(%rdi),%xmm2 > + movl $13,%esi > + leaq 16(%rax),%rax > + cmpl $268435456,%r10d > + je .L14rounds_alt > + > + movups %xmm0,(%rdx) > + movups %xmm2,16(%rdx) > +.byte 102,15,58,223,202,1 > + call .Lkey_expansion_256a_cold > +.byte 102,15,58,223,200,1 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,2 > + call .Lkey_expansion_256a > +.byte 102,15,58,223,200,2 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,4 > + call .Lkey_expansion_256a > +.byte 102,15,58,223,200,4 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,8 > + call .Lkey_expansion_256a > +.byte 102,15,58,223,200,8 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,16 > + call .Lkey_expansion_256a > +.byte 102,15,58,223,200,16 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,32 > + call .Lkey_expansion_256a > +.byte 102,15,58,223,200,32 > + call .Lkey_expansion_256b > +.byte 102,15,58,223,202,64 > + call .Lkey_expansion_256a > + movups %xmm0,(%rax) > + movl %esi,16(%rax) > + xorq %rax,%rax > + jmp .Lenc_key_ret > + > +.align 16 > +.L14rounds_alt: > + movdqa .Lkey_rotate(%rip),%xmm5 > + movdqa .Lkey_rcon1(%rip),%xmm4 > + movl $7,%r10d > + movdqu %xmm0,0(%rdx) > + movdqa %xmm2,%xmm1 > + movdqu %xmm2,16(%rdx) > + jmp .Loop_key256 > + > +.align 16 > +.Loop_key256: > +.byte 102,15,56,0,213 > +.byte 102,15,56,221,212 > + > + movdqa %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm0,%xmm3 > + pslldq $4,%xmm0 > + pxor %xmm3,%xmm0 > + pslld $1,%xmm4 > + > + pxor %xmm2,%xmm0 > + movdqu %xmm0,(%rax) > + > + decl %r10d > + jz .Ldone_key256 > + > + pshufd $0xff,%xmm0,%xmm2 > + pxor %xmm3,%xmm3 > +.byte 102,15,56,221,211 > + > + movdqa %xmm1,%xmm3 > + pslldq $4,%xmm1 > + pxor %xmm1,%xmm3 > + pslldq $4,%xmm1 > + pxor %xmm1,%xmm3 > + pslldq $4,%xmm1 > + pxor %xmm3,%xmm1 > + > + pxor %xmm1,%xmm2 > + movdqu %xmm2,16(%rax) > + leaq 32(%rax),%rax > + movdqa %xmm2,%xmm1 > + > + jmp .Loop_key256 > + > +.Ldone_key256: > + movl %esi,16(%rax) > + xorl %eax,%eax > + jmp .Lenc_key_ret > + > +.align 16 > +.Lbad_keybits: > + movq $-2,%rax > +.Lenc_key_ret: > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + addq $8,%rsp > +.cfi_adjust_cfa_offset -8 > + .byte 0xf3,0xc3 > +.LSEH_end_set_encrypt_key: > + > +.align 16 > +.Lkey_expansion_128: > + movups %xmm0,(%rax) > + leaq 16(%rax),%rax > +.Lkey_expansion_128_cold: > + shufps $16,%xmm0,%xmm4 > + xorps %xmm4,%xmm0 > + shufps $140,%xmm0,%xmm4 > + xorps %xmm4,%xmm0 > + shufps $255,%xmm1,%xmm1 > + xorps %xmm1,%xmm0 > + .byte 0xf3,0xc3 > + > +.align 16 > +.Lkey_expansion_192a: > + movups %xmm0,(%rax) > + leaq 16(%rax),%rax > +.Lkey_expansion_192a_cold: > + movaps %xmm2,%xmm5 > +.Lkey_expansion_192b_warm: > + shufps $16,%xmm0,%xmm4 > + movdqa %xmm2,%xmm3 > + xorps %xmm4,%xmm0 > + shufps $140,%xmm0,%xmm4 > + pslldq $4,%xmm3 > + xorps %xmm4,%xmm0 > + pshufd $85,%xmm1,%xmm1 > + pxor %xmm3,%xmm2 > + pxor %xmm1,%xmm0 > + pshufd $255,%xmm0,%xmm3 > + pxor %xmm3,%xmm2 > + .byte 0xf3,0xc3 > + > +.align 16 > +.Lkey_expansion_192b: > + movaps %xmm0,%xmm3 > + shufps $68,%xmm0,%xmm5 > + movups %xmm5,(%rax) > + shufps $78,%xmm2,%xmm3 > + movups %xmm3,16(%rax) > + leaq 32(%rax),%rax > + jmp .Lkey_expansion_192b_warm > + > +.align 16 > +.Lkey_expansion_256a: > + movups %xmm2,(%rax) > + leaq 16(%rax),%rax > +.Lkey_expansion_256a_cold: > + shufps $16,%xmm0,%xmm4 > + xorps %xmm4,%xmm0 > + shufps $140,%xmm0,%xmm4 > + xorps %xmm4,%xmm0 > + shufps $255,%xmm1,%xmm1 > + xorps %xmm1,%xmm0 > + .byte 0xf3,0xc3 > + > +.align 16 > +.Lkey_expansion_256b: > + movups %xmm0,(%rax) > + leaq 16(%rax),%rax > + > + shufps $16,%xmm2,%xmm4 > + xorps %xmm4,%xmm2 > + shufps $140,%xmm2,%xmm4 > + xorps %xmm4,%xmm2 > + shufps $170,%xmm1,%xmm1 > + xorps %xmm1,%xmm2 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_set_encrypt_key,.-aesni_set_encrypt_key > +.size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key > +.align 64 > +.Lbswap_mask: > +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 > +.Lincrement32: > +.long 6,6,6,0 > +.Lincrement64: > +.long 1,0,0,0 > +.Lxts_magic: > +.long 0x87,0,1,0 > +.Lincrement1: > +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 > +.Lkey_rotate: > +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d > +.Lkey_rotate192: > +.long 0x04070605,0x04070605,0x04070605,0x04070605 > +.Lkey_rcon1: > +.long 1,1,1,1 > +.Lkey_rcon1b: > +.long 0x1b,0x1b,0x1b,0x1b > + > +.byte > 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,= 67 > ,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112= ,1 > 01,110,115,115,108,46,111,114,103,62,0 > +.align 64 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.= S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S > new file mode 100644 > index 0000000000..982818f83b > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S > @@ -0,0 +1,863 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl > +# > +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +.type _vpaes_encrypt_core,@function > +.align 16 > +_vpaes_encrypt_core: > +.cfi_startproc > + movq %rdx,%r9 > + movq $16,%r11 > + movl 240(%rdx),%eax > + movdqa %xmm9,%xmm1 > + movdqa .Lk_ipt(%rip),%xmm2 > + pandn %xmm0,%xmm1 > + movdqu (%r9),%xmm5 > + psrld $4,%xmm1 > + pand %xmm9,%xmm0 > +.byte 102,15,56,0,208 > + movdqa .Lk_ipt+16(%rip),%xmm0 > +.byte 102,15,56,0,193 > + pxor %xmm5,%xmm2 > + addq $16,%r9 > + pxor %xmm2,%xmm0 > + leaq .Lk_mc_backward(%rip),%r10 > + jmp .Lenc_entry > + > +.align 16 > +.Lenc_loop: > + > + movdqa %xmm13,%xmm4 > + movdqa %xmm12,%xmm0 > +.byte 102,15,56,0,226 > +.byte 102,15,56,0,195 > + pxor %xmm5,%xmm4 > + movdqa %xmm15,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa -64(%r11,%r10,1),%xmm1 > +.byte 102,15,56,0,234 > + movdqa (%r11,%r10,1),%xmm4 > + movdqa %xmm14,%xmm2 > +.byte 102,15,56,0,211 > + movdqa %xmm0,%xmm3 > + pxor %xmm5,%xmm2 > +.byte 102,15,56,0,193 > + addq $16,%r9 > + pxor %xmm2,%xmm0 > +.byte 102,15,56,0,220 > + addq $16,%r11 > + pxor %xmm0,%xmm3 > +.byte 102,15,56,0,193 > + andq $0x30,%r11 > + subq $1,%rax > + pxor %xmm3,%xmm0 > + > +.Lenc_entry: > + > + movdqa %xmm9,%xmm1 > + movdqa %xmm11,%xmm5 > + pandn %xmm0,%xmm1 > + psrld $4,%xmm1 > + pand %xmm9,%xmm0 > +.byte 102,15,56,0,232 > + movdqa %xmm10,%xmm3 > + pxor %xmm1,%xmm0 > +.byte 102,15,56,0,217 > + movdqa %xmm10,%xmm4 > + pxor %xmm5,%xmm3 > +.byte 102,15,56,0,224 > + movdqa %xmm10,%xmm2 > + pxor %xmm5,%xmm4 > +.byte 102,15,56,0,211 > + movdqa %xmm10,%xmm3 > + pxor %xmm0,%xmm2 > +.byte 102,15,56,0,220 > + movdqu (%r9),%xmm5 > + pxor %xmm1,%xmm3 > + jnz .Lenc_loop > + > + > + movdqa -96(%r10),%xmm4 > + movdqa -80(%r10),%xmm0 > +.byte 102,15,56,0,226 > + pxor %xmm5,%xmm4 > +.byte 102,15,56,0,195 > + movdqa 64(%r11,%r10,1),%xmm1 > + pxor %xmm4,%xmm0 > +.byte 102,15,56,0,193 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_encrypt_core,.-_vpaes_encrypt_core > + > + > + > + > + > + > +.type _vpaes_decrypt_core,@function > +.align 16 > +_vpaes_decrypt_core: > +.cfi_startproc > + movq %rdx,%r9 > + movl 240(%rdx),%eax > + movdqa %xmm9,%xmm1 > + movdqa .Lk_dipt(%rip),%xmm2 > + pandn %xmm0,%xmm1 > + movq %rax,%r11 > + psrld $4,%xmm1 > + movdqu (%r9),%xmm5 > + shlq $4,%r11 > + pand %xmm9,%xmm0 > +.byte 102,15,56,0,208 > + movdqa .Lk_dipt+16(%rip),%xmm0 > + xorq $0x30,%r11 > + leaq .Lk_dsbd(%rip),%r10 > +.byte 102,15,56,0,193 > + andq $0x30,%r11 > + pxor %xmm5,%xmm2 > + movdqa .Lk_mc_forward+48(%rip),%xmm5 > + pxor %xmm2,%xmm0 > + addq $16,%r9 > + addq %r10,%r11 > + jmp .Ldec_entry > + > +.align 16 > +.Ldec_loop: > + > + > + > + movdqa -32(%r10),%xmm4 > + movdqa -16(%r10),%xmm1 > +.byte 102,15,56,0,226 > +.byte 102,15,56,0,203 > + pxor %xmm4,%xmm0 > + movdqa 0(%r10),%xmm4 > + pxor %xmm1,%xmm0 > + movdqa 16(%r10),%xmm1 > + > +.byte 102,15,56,0,226 > +.byte 102,15,56,0,197 > +.byte 102,15,56,0,203 > + pxor %xmm4,%xmm0 > + movdqa 32(%r10),%xmm4 > + pxor %xmm1,%xmm0 > + movdqa 48(%r10),%xmm1 > + > +.byte 102,15,56,0,226 > +.byte 102,15,56,0,197 > +.byte 102,15,56,0,203 > + pxor %xmm4,%xmm0 > + movdqa 64(%r10),%xmm4 > + pxor %xmm1,%xmm0 > + movdqa 80(%r10),%xmm1 > + > +.byte 102,15,56,0,226 > +.byte 102,15,56,0,197 > +.byte 102,15,56,0,203 > + pxor %xmm4,%xmm0 > + addq $16,%r9 > +.byte 102,15,58,15,237,12 > + pxor %xmm1,%xmm0 > + subq $1,%rax > + > +.Ldec_entry: > + > + movdqa %xmm9,%xmm1 > + pandn %xmm0,%xmm1 > + movdqa %xmm11,%xmm2 > + psrld $4,%xmm1 > + pand %xmm9,%xmm0 > +.byte 102,15,56,0,208 > + movdqa %xmm10,%xmm3 > + pxor %xmm1,%xmm0 > +.byte 102,15,56,0,217 > + movdqa %xmm10,%xmm4 > + pxor %xmm2,%xmm3 > +.byte 102,15,56,0,224 > + pxor %xmm2,%xmm4 > + movdqa %xmm10,%xmm2 > +.byte 102,15,56,0,211 > + movdqa %xmm10,%xmm3 > + pxor %xmm0,%xmm2 > +.byte 102,15,56,0,220 > + movdqu (%r9),%xmm0 > + pxor %xmm1,%xmm3 > + jnz .Ldec_loop > + > + > + movdqa 96(%r10),%xmm4 > +.byte 102,15,56,0,226 > + pxor %xmm0,%xmm4 > + movdqa 112(%r10),%xmm0 > + movdqa -352(%r11),%xmm2 > +.byte 102,15,56,0,195 > + pxor %xmm4,%xmm0 > +.byte 102,15,56,0,194 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_decrypt_core,.-_vpaes_decrypt_core > + > + > + > + > + > + > +.type _vpaes_schedule_core,@function > +.align 16 > +_vpaes_schedule_core: > +.cfi_startproc > + > + > + > + > + > + call _vpaes_preheat > + movdqa .Lk_rcon(%rip),%xmm8 > + movdqu (%rdi),%xmm0 > + > + > + movdqa %xmm0,%xmm3 > + leaq .Lk_ipt(%rip),%r11 > + call _vpaes_schedule_transform > + movdqa %xmm0,%xmm7 > + > + leaq .Lk_sr(%rip),%r10 > + testq %rcx,%rcx > + jnz .Lschedule_am_decrypting > + > + > + movdqu %xmm0,(%rdx) > + jmp .Lschedule_go > + > +.Lschedule_am_decrypting: > + > + movdqa (%r8,%r10,1),%xmm1 > +.byte 102,15,56,0,217 > + movdqu %xmm3,(%rdx) > + xorq $0x30,%r8 > + > +.Lschedule_go: > + cmpl $192,%esi > + ja .Lschedule_256 > + je .Lschedule_192 > + > + > + > + > + > + > + > + > + > + > +.Lschedule_128: > + movl $10,%esi > + > +.Loop_schedule_128: > + call _vpaes_schedule_round > + decq %rsi > + jz .Lschedule_mangle_last > + call _vpaes_schedule_mangle > + jmp .Loop_schedule_128 > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +.align 16 > +.Lschedule_192: > + movdqu 8(%rdi),%xmm0 > + call _vpaes_schedule_transform > + movdqa %xmm0,%xmm6 > + pxor %xmm4,%xmm4 > + movhlps %xmm4,%xmm6 > + movl $4,%esi > + > +.Loop_schedule_192: > + call _vpaes_schedule_round > +.byte 102,15,58,15,198,8 > + call _vpaes_schedule_mangle > + call _vpaes_schedule_192_smear > + call _vpaes_schedule_mangle > + call _vpaes_schedule_round > + decq %rsi > + jz .Lschedule_mangle_last > + call _vpaes_schedule_mangle > + call _vpaes_schedule_192_smear > + jmp .Loop_schedule_192 > + > + > + > + > + > + > + > + > + > + > + > +.align 16 > +.Lschedule_256: > + movdqu 16(%rdi),%xmm0 > + call _vpaes_schedule_transform > + movl $7,%esi > + > +.Loop_schedule_256: > + call _vpaes_schedule_mangle > + movdqa %xmm0,%xmm6 > + > + > + call _vpaes_schedule_round > + decq %rsi > + jz .Lschedule_mangle_last > + call _vpaes_schedule_mangle > + > + > + pshufd $0xFF,%xmm0,%xmm0 > + movdqa %xmm7,%xmm5 > + movdqa %xmm6,%xmm7 > + call _vpaes_schedule_low_round > + movdqa %xmm5,%xmm7 > + > + jmp .Loop_schedule_256 > + > + > + > + > + > + > + > + > + > + > + > + > +.align 16 > +.Lschedule_mangle_last: > + > + leaq .Lk_deskew(%rip),%r11 > + testq %rcx,%rcx > + jnz .Lschedule_mangle_last_dec > + > + > + movdqa (%r8,%r10,1),%xmm1 > +.byte 102,15,56,0,193 > + leaq .Lk_opt(%rip),%r11 > + addq $32,%rdx > + > +.Lschedule_mangle_last_dec: > + addq $-16,%rdx > + pxor .Lk_s63(%rip),%xmm0 > + call _vpaes_schedule_transform > + movdqu %xmm0,(%rdx) > + > + > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_schedule_core,.-_vpaes_schedule_core > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +.type _vpaes_schedule_192_smear,@function > +.align 16 > +_vpaes_schedule_192_smear: > +.cfi_startproc > + pshufd $0x80,%xmm6,%xmm1 > + pshufd $0xFE,%xmm7,%xmm0 > + pxor %xmm1,%xmm6 > + pxor %xmm1,%xmm1 > + pxor %xmm0,%xmm6 > + movdqa %xmm6,%xmm0 > + movhlps %xmm1,%xmm6 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +.type _vpaes_schedule_round,@function > +.align 16 > +_vpaes_schedule_round: > +.cfi_startproc > + > + pxor %xmm1,%xmm1 > +.byte 102,65,15,58,15,200,15 > +.byte 102,69,15,58,15,192,15 > + pxor %xmm1,%xmm7 > + > + > + pshufd $0xFF,%xmm0,%xmm0 > +.byte 102,15,58,15,192,1 > + > + > + > + > +_vpaes_schedule_low_round: > + > + movdqa %xmm7,%xmm1 > + pslldq $4,%xmm7 > + pxor %xmm1,%xmm7 > + movdqa %xmm7,%xmm1 > + pslldq $8,%xmm7 > + pxor %xmm1,%xmm7 > + pxor .Lk_s63(%rip),%xmm7 > + > + > + movdqa %xmm9,%xmm1 > + pandn %xmm0,%xmm1 > + psrld $4,%xmm1 > + pand %xmm9,%xmm0 > + movdqa %xmm11,%xmm2 > +.byte 102,15,56,0,208 > + pxor %xmm1,%xmm0 > + movdqa %xmm10,%xmm3 > +.byte 102,15,56,0,217 > + pxor %xmm2,%xmm3 > + movdqa %xmm10,%xmm4 > +.byte 102,15,56,0,224 > + pxor %xmm2,%xmm4 > + movdqa %xmm10,%xmm2 > +.byte 102,15,56,0,211 > + pxor %xmm0,%xmm2 > + movdqa %xmm10,%xmm3 > +.byte 102,15,56,0,220 > + pxor %xmm1,%xmm3 > + movdqa %xmm13,%xmm4 > +.byte 102,15,56,0,226 > + movdqa %xmm12,%xmm0 > +.byte 102,15,56,0,195 > + pxor %xmm4,%xmm0 > + > + > + pxor %xmm7,%xmm0 > + movdqa %xmm0,%xmm7 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_schedule_round,.-_vpaes_schedule_round > + > + > + > + > + > + > + > + > + > + > +.type _vpaes_schedule_transform,@function > +.align 16 > +_vpaes_schedule_transform: > +.cfi_startproc > + movdqa %xmm9,%xmm1 > + pandn %xmm0,%xmm1 > + psrld $4,%xmm1 > + pand %xmm9,%xmm0 > + movdqa (%r11),%xmm2 > +.byte 102,15,56,0,208 > + movdqa 16(%r11),%xmm0 > +.byte 102,15,56,0,193 > + pxor %xmm2,%xmm0 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_schedule_transform,.-_vpaes_schedule_transform > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > +.type _vpaes_schedule_mangle,@function > +.align 16 > +_vpaes_schedule_mangle: > +.cfi_startproc > + movdqa %xmm0,%xmm4 > + movdqa .Lk_mc_forward(%rip),%xmm5 > + testq %rcx,%rcx > + jnz .Lschedule_mangle_dec > + > + > + addq $16,%rdx > + pxor .Lk_s63(%rip),%xmm4 > +.byte 102,15,56,0,229 > + movdqa %xmm4,%xmm3 > +.byte 102,15,56,0,229 > + pxor %xmm4,%xmm3 > +.byte 102,15,56,0,229 > + pxor %xmm4,%xmm3 > + > + jmp .Lschedule_mangle_both > +.align 16 > +.Lschedule_mangle_dec: > + > + leaq .Lk_dksd(%rip),%r11 > + movdqa %xmm9,%xmm1 > + pandn %xmm4,%xmm1 > + psrld $4,%xmm1 > + pand %xmm9,%xmm4 > + > + movdqa 0(%r11),%xmm2 > +.byte 102,15,56,0,212 > + movdqa 16(%r11),%xmm3 > +.byte 102,15,56,0,217 > + pxor %xmm2,%xmm3 > +.byte 102,15,56,0,221 > + > + movdqa 32(%r11),%xmm2 > +.byte 102,15,56,0,212 > + pxor %xmm3,%xmm2 > + movdqa 48(%r11),%xmm3 > +.byte 102,15,56,0,217 > + pxor %xmm2,%xmm3 > +.byte 102,15,56,0,221 > + > + movdqa 64(%r11),%xmm2 > +.byte 102,15,56,0,212 > + pxor %xmm3,%xmm2 > + movdqa 80(%r11),%xmm3 > +.byte 102,15,56,0,217 > + pxor %xmm2,%xmm3 > +.byte 102,15,56,0,221 > + > + movdqa 96(%r11),%xmm2 > +.byte 102,15,56,0,212 > + pxor %xmm3,%xmm2 > + movdqa 112(%r11),%xmm3 > +.byte 102,15,56,0,217 > + pxor %xmm2,%xmm3 > + > + addq $-16,%rdx > + > +.Lschedule_mangle_both: > + movdqa (%r8,%r10,1),%xmm1 > +.byte 102,15,56,0,217 > + addq $-16,%r8 > + andq $0x30,%r8 > + movdqu %xmm3,(%rdx) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle > + > + > + > + > +.globl vpaes_set_encrypt_key > +.type vpaes_set_encrypt_key,@function > +.align 16 > +vpaes_set_encrypt_key: > +.cfi_startproc > + movl %esi,%eax > + shrl $5,%eax > + addl $5,%eax > + movl %eax,240(%rdx) > + > + movl $0,%ecx > + movl $0x30,%r8d > + call _vpaes_schedule_core > + xorl %eax,%eax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key > + > +.globl vpaes_set_decrypt_key > +.type vpaes_set_decrypt_key,@function > +.align 16 > +vpaes_set_decrypt_key: > +.cfi_startproc > + movl %esi,%eax > + shrl $5,%eax > + addl $5,%eax > + movl %eax,240(%rdx) > + shll $4,%eax > + leaq 16(%rdx,%rax,1),%rdx > + > + movl $1,%ecx > + movl %esi,%r8d > + shrl $1,%r8d > + andl $32,%r8d > + xorl $32,%r8d > + call _vpaes_schedule_core > + xorl %eax,%eax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key > + > +.globl vpaes_encrypt > +.type vpaes_encrypt,@function > +.align 16 > +vpaes_encrypt: > +.cfi_startproc > + movdqu (%rdi),%xmm0 > + call _vpaes_preheat > + call _vpaes_encrypt_core > + movdqu %xmm0,(%rsi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size vpaes_encrypt,.-vpaes_encrypt > + > +.globl vpaes_decrypt > +.type vpaes_decrypt,@function > +.align 16 > +vpaes_decrypt: > +.cfi_startproc > + movdqu (%rdi),%xmm0 > + call _vpaes_preheat > + call _vpaes_decrypt_core > + movdqu %xmm0,(%rsi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size vpaes_decrypt,.-vpaes_decrypt > +.globl vpaes_cbc_encrypt > +.type vpaes_cbc_encrypt,@function > +.align 16 > +vpaes_cbc_encrypt: > +.cfi_startproc > + xchgq %rcx,%rdx > + subq $16,%rcx > + jc .Lcbc_abort > + movdqu (%r8),%xmm6 > + subq %rdi,%rsi > + call _vpaes_preheat > + cmpl $0,%r9d > + je .Lcbc_dec_loop > + jmp .Lcbc_enc_loop > +.align 16 > +.Lcbc_enc_loop: > + movdqu (%rdi),%xmm0 > + pxor %xmm6,%xmm0 > + call _vpaes_encrypt_core > + movdqa %xmm0,%xmm6 > + movdqu %xmm0,(%rsi,%rdi,1) > + leaq 16(%rdi),%rdi > + subq $16,%rcx > + jnc .Lcbc_enc_loop > + jmp .Lcbc_done > +.align 16 > +.Lcbc_dec_loop: > + movdqu (%rdi),%xmm0 > + movdqa %xmm0,%xmm7 > + call _vpaes_decrypt_core > + pxor %xmm6,%xmm0 > + movdqa %xmm7,%xmm6 > + movdqu %xmm0,(%rsi,%rdi,1) > + leaq 16(%rdi),%rdi > + subq $16,%rcx > + jnc .Lcbc_dec_loop > +.Lcbc_done: > + movdqu %xmm6,(%r8) > +.Lcbc_abort: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt > + > + > + > + > + > + > +.type _vpaes_preheat,@function > +.align 16 > +_vpaes_preheat: > +.cfi_startproc > + leaq .Lk_s0F(%rip),%r10 > + movdqa -32(%r10),%xmm10 > + movdqa -16(%r10),%xmm11 > + movdqa 0(%r10),%xmm9 > + movdqa 48(%r10),%xmm13 > + movdqa 64(%r10),%xmm12 > + movdqa 80(%r10),%xmm15 > + movdqa 96(%r10),%xmm14 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size _vpaes_preheat,.-_vpaes_preheat > + > + > + > + > + > +.type _vpaes_consts,@object > +.align 64 > +_vpaes_consts: > +.Lk_inv: > +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 > +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 > + > +.Lk_s0F: > +.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F > + > +.Lk_ipt: > +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 > +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 > + > +.Lk_sb1: > +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 > +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF > +.Lk_sb2: > +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD > +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A > +.Lk_sbo: > +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 > +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA > + > +.Lk_mc_forward: > +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 > +.quad 0x080B0A0904070605, 0x000302010C0F0E0D > +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 > +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 > + > +.Lk_mc_backward: > +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B > +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 > +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 > +.quad 0x0A09080B06050407, 0x020100030E0D0C0F > + > +.Lk_sr: > +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 > +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 > +.quad 0x0F060D040B020900, 0x070E050C030A0108 > +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 > + > +.Lk_rcon: > +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 > + > +.Lk_s63: > +.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B > + > +.Lk_opt: > +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 > +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 > + > +.Lk_deskew: > +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A > +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 > + > + > + > + > + > +.Lk_dksd: > +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 > +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E > +.Lk_dksb: > +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 > +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 > +.Lk_dkse: > +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 > +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 > +.Lk_dks9: > +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC > +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE > + > + > + > + > + > +.Lk_dipt: > +.quad 0x0F505B040B545F00, 0x154A411E114E451A > +.quad 0x86E383E660056500, 0x12771772F491F194 > + > +.Lk_dsb9: > +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 > +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 > +.Lk_dsbd: > +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 > +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 > +.Lk_dsbb: > +.quad 0xD022649296B44200, 0x602646F6B0F2D404 > +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B > +.Lk_dsbe: > +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 > +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 > +.Lk_dsbo: > +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D > +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C > +.byte > 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,= 6 > 9,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,= 10 > 7,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,= 8 > 5,110,105,118,101,114,115,105,116,121,41,0 > +.align 64 > +.size _vpaes_consts,.-_vpaes_consts > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm- > x86_64.S > new file mode 100644 > index 0000000000..1201f3427a > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm- > x86_64.S > @@ -0,0 +1,29 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl > +# > +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > +.globl aesni_gcm_encrypt > +.type aesni_gcm_encrypt,@function > +aesni_gcm_encrypt: > +.cfi_startproc > + xorl %eax,%eax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt > + > +.globl aesni_gcm_decrypt > +.type aesni_gcm_decrypt,@function > +aesni_gcm_decrypt: > +.cfi_startproc > + xorl %eax,%eax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash- > x86_64.S > new file mode 100644 > index 0000000000..3fcaa4b2ef > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S > @@ -0,0 +1,1386 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/modes/asm/ghash-x86_64.pl > +# > +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl gcm_gmult_4bit > +.type gcm_gmult_4bit,@function > +.align 16 > +gcm_gmult_4bit: > +.cfi_startproc > + pushq %rbx > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r15,-56 > + subq $280,%rsp > +.cfi_adjust_cfa_offset 280 > +.Lgmult_prologue: > + > + movzbq 15(%rdi),%r8 > + leaq .Lrem_4bit(%rip),%r11 > + xorq %rax,%rax > + xorq %rbx,%rbx > + movb %r8b,%al > + movb %r8b,%bl > + shlb $4,%al > + movq $14,%rcx > + movq 8(%rsi,%rax,1),%r8 > + movq (%rsi,%rax,1),%r9 > + andb $0xf0,%bl > + movq %r8,%rdx > + jmp .Loop1 > + > +.align 16 > +.Loop1: > + shrq $4,%r8 > + andq $0xf,%rdx > + movq %r9,%r10 > + movb (%rdi,%rcx,1),%al > + shrq $4,%r9 > + xorq 8(%rsi,%rbx,1),%r8 > + shlq $60,%r10 > + xorq (%rsi,%rbx,1),%r9 > + movb %al,%bl > + xorq (%r11,%rdx,8),%r9 > + movq %r8,%rdx > + shlb $4,%al > + xorq %r10,%r8 > + decq %rcx > + js .Lbreak1 > + > + shrq $4,%r8 > + andq $0xf,%rdx > + movq %r9,%r10 > + shrq $4,%r9 > + xorq 8(%rsi,%rax,1),%r8 > + shlq $60,%r10 > + xorq (%rsi,%rax,1),%r9 > + andb $0xf0,%bl > + xorq (%r11,%rdx,8),%r9 > + movq %r8,%rdx > + xorq %r10,%r8 > + jmp .Loop1 > + > +.align 16 > +.Lbreak1: > + shrq $4,%r8 > + andq $0xf,%rdx > + movq %r9,%r10 > + shrq $4,%r9 > + xorq 8(%rsi,%rax,1),%r8 > + shlq $60,%r10 > + xorq (%rsi,%rax,1),%r9 > + andb $0xf0,%bl > + xorq (%r11,%rdx,8),%r9 > + movq %r8,%rdx > + xorq %r10,%r8 > + > + shrq $4,%r8 > + andq $0xf,%rdx > + movq %r9,%r10 > + shrq $4,%r9 > + xorq 8(%rsi,%rbx,1),%r8 > + shlq $60,%r10 > + xorq (%rsi,%rbx,1),%r9 > + xorq %r10,%r8 > + xorq (%r11,%rdx,8),%r9 > + > + bswapq %r8 > + bswapq %r9 > + movq %r8,8(%rdi) > + movq %r9,(%rdi) > + > + leaq 280+48(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq (%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lgmult_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size gcm_gmult_4bit,.-gcm_gmult_4bit > +.globl gcm_ghash_4bit > +.type gcm_ghash_4bit,@function > +.align 16 > +gcm_ghash_4bit: > +.cfi_startproc > + pushq %rbx > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_adjust_cfa_offset 8 > +.cfi_offset %r15,-56 > + subq $280,%rsp > +.cfi_adjust_cfa_offset 280 > +.Lghash_prologue: > + movq %rdx,%r14 > + movq %rcx,%r15 > + subq $-128,%rsi > + leaq 16+128(%rsp),%rbp > + xorl %edx,%edx > + movq 0+0-128(%rsi),%r8 > + movq 0+8-128(%rsi),%rax > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq 16+0-128(%rsi),%r9 > + shlb $4,%dl > + movq 16+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,0(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,0(%rbp) > + movq 32+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,0-128(%rbp) > + movq 32+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,1(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,8(%rbp) > + movq 48+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,8-128(%rbp) > + movq 48+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,2(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,16(%rbp) > + movq 64+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,16-128(%rbp) > + movq 64+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,3(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,24(%rbp) > + movq 80+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,24-128(%rbp) > + movq 80+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,4(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,32(%rbp) > + movq 96+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,32-128(%rbp) > + movq 96+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,5(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,40(%rbp) > + movq 112+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,40-128(%rbp) > + movq 112+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,6(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,48(%rbp) > + movq 128+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,48-128(%rbp) > + movq 128+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,7(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,56(%rbp) > + movq 144+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,56-128(%rbp) > + movq 144+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,8(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,64(%rbp) > + movq 160+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,64-128(%rbp) > + movq 160+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,9(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,72(%rbp) > + movq 176+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,72-128(%rbp) > + movq 176+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,10(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,80(%rbp) > + movq 192+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,80-128(%rbp) > + movq 192+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,11(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,88(%rbp) > + movq 208+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,88-128(%rbp) > + movq 208+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,12(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,96(%rbp) > + movq 224+0-128(%rsi),%r8 > + shlb $4,%dl > + movq %rax,96-128(%rbp) > + movq 224+8-128(%rsi),%rax > + shlq $60,%r10 > + movb %dl,13(%rsp) > + orq %r10,%rbx > + movb %al,%dl > + shrq $4,%rax > + movq %r8,%r10 > + shrq $4,%r8 > + movq %r9,104(%rbp) > + movq 240+0-128(%rsi),%r9 > + shlb $4,%dl > + movq %rbx,104-128(%rbp) > + movq 240+8-128(%rsi),%rbx > + shlq $60,%r10 > + movb %dl,14(%rsp) > + orq %r10,%rax > + movb %bl,%dl > + shrq $4,%rbx > + movq %r9,%r10 > + shrq $4,%r9 > + movq %r8,112(%rbp) > + shlb $4,%dl > + movq %rax,112-128(%rbp) > + shlq $60,%r10 > + movb %dl,15(%rsp) > + orq %r10,%rbx > + movq %r9,120(%rbp) > + movq %rbx,120-128(%rbp) > + addq $-128,%rsi > + movq 8(%rdi),%r8 > + movq 0(%rdi),%r9 > + addq %r14,%r15 > + leaq .Lrem_8bit(%rip),%r11 > + jmp .Louter_loop > +.align 16 > +.Louter_loop: > + xorq (%r14),%r9 > + movq 8(%r14),%rdx > + leaq 16(%r14),%r14 > + xorq %r8,%rdx > + movq %r9,(%rdi) > + movq %rdx,8(%rdi) > + shrq $32,%rdx > + xorq %rax,%rax > + roll $8,%edx > + movb %dl,%al > + movzbl %dl,%ebx > + shlb $4,%al > + shrl $4,%ebx > + roll $8,%edx > + movq 8(%rsi,%rax,1),%r8 > + movq (%rsi,%rax,1),%r9 > + movb %dl,%al > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + xorq %r8,%r12 > + movq %r9,%r10 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + movl 8(%rdi),%edx > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + movl 4(%rdi),%edx > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + movl 0(%rdi),%edx > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + shrl $4,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r12,2),%r12 > + movzbl %dl,%ebx > + shlb $4,%al > + movzbq (%rsp,%rcx,1),%r13 > + shrl $4,%ebx > + shlq $48,%r12 > + xorq %r8,%r13 > + movq %r9,%r10 > + xorq %r12,%r9 > + shrq $8,%r8 > + movzbq %r13b,%r13 > + shrq $8,%r9 > + xorq -128(%rbp,%rcx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rcx,8),%r9 > + roll $8,%edx > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + movb %dl,%al > + xorq %r10,%r8 > + movzwq (%r11,%r13,2),%r13 > + movzbl %dl,%ecx > + shlb $4,%al > + movzbq (%rsp,%rbx,1),%r12 > + andl $240,%ecx > + shlq $48,%r13 > + xorq %r8,%r12 > + movq %r9,%r10 > + xorq %r13,%r9 > + shrq $8,%r8 > + movzbq %r12b,%r12 > + movl -4(%rdi),%edx > + shrq $8,%r9 > + xorq -128(%rbp,%rbx,8),%r8 > + shlq $56,%r10 > + xorq (%rbp,%rbx,8),%r9 > + movzwq (%r11,%r12,2),%r12 > + xorq 8(%rsi,%rax,1),%r8 > + xorq (%rsi,%rax,1),%r9 > + shlq $48,%r12 > + xorq %r10,%r8 > + xorq %r12,%r9 > + movzbq %r8b,%r13 > + shrq $4,%r8 > + movq %r9,%r10 > + shlb $4,%r13b > + shrq $4,%r9 > + xorq 8(%rsi,%rcx,1),%r8 > + movzwq (%r11,%r13,2),%r13 > + shlq $60,%r10 > + xorq (%rsi,%rcx,1),%r9 > + xorq %r10,%r8 > + shlq $48,%r13 > + bswapq %r8 > + xorq %r13,%r9 > + bswapq %r9 > + cmpq %r15,%r14 > + jb .Louter_loop > + movq %r8,8(%rdi) > + movq %r9,(%rdi) > + > + leaq 280+48(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -48(%rsi),%r15 > +.cfi_restore %r15 > + movq -40(%rsi),%r14 > +.cfi_restore %r14 > + movq -32(%rsi),%r13 > +.cfi_restore %r13 > + movq -24(%rsi),%r12 > +.cfi_restore %r12 > + movq -16(%rsi),%rbp > +.cfi_restore %rbp > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq 0(%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lghash_epilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size gcm_ghash_4bit,.-gcm_ghash_4bit > +.globl gcm_init_clmul > +.type gcm_init_clmul,@function > +.align 16 > +gcm_init_clmul: > +.cfi_startproc > +.L_init_clmul: > + movdqu (%rsi),%xmm2 > + pshufd $78,%xmm2,%xmm2 > + > + > + pshufd $255,%xmm2,%xmm4 > + movdqa %xmm2,%xmm3 > + psllq $1,%xmm2 > + pxor %xmm5,%xmm5 > + psrlq $63,%xmm3 > + pcmpgtd %xmm4,%xmm5 > + pslldq $8,%xmm3 > + por %xmm3,%xmm2 > + > + > + pand .L0x1c2_polynomial(%rip),%xmm5 > + pxor %xmm5,%xmm2 > + > + > + pshufd $78,%xmm2,%xmm6 > + movdqa %xmm2,%xmm0 > + pxor %xmm2,%xmm6 > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm3 > + pxor %xmm0,%xmm3 > +.byte 102,15,58,68,194,0 > +.byte 102,15,58,68,202,17 > +.byte 102,15,58,68,222,0 > + pxor %xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + > + movdqa %xmm3,%xmm4 > + psrldq $8,%xmm3 > + pslldq $8,%xmm4 > + pxor %xmm3,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + pshufd $78,%xmm2,%xmm3 > + pshufd $78,%xmm0,%xmm4 > + pxor %xmm2,%xmm3 > + movdqu %xmm2,0(%rdi) > + pxor %xmm0,%xmm4 > + movdqu %xmm0,16(%rdi) > +.byte 102,15,58,15,227,8 > + movdqu %xmm4,32(%rdi) > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm3 > + pxor %xmm0,%xmm3 > +.byte 102,15,58,68,194,0 > +.byte 102,15,58,68,202,17 > +.byte 102,15,58,68,222,0 > + pxor %xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + > + movdqa %xmm3,%xmm4 > + psrldq $8,%xmm3 > + pslldq $8,%xmm4 > + pxor %xmm3,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + movdqa %xmm0,%xmm5 > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm3 > + pxor %xmm0,%xmm3 > +.byte 102,15,58,68,194,0 > +.byte 102,15,58,68,202,17 > +.byte 102,15,58,68,222,0 > + pxor %xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + > + movdqa %xmm3,%xmm4 > + psrldq $8,%xmm3 > + pslldq $8,%xmm4 > + pxor %xmm3,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + pshufd $78,%xmm5,%xmm3 > + pshufd $78,%xmm0,%xmm4 > + pxor %xmm5,%xmm3 > + movdqu %xmm5,48(%rdi) > + pxor %xmm0,%xmm4 > + movdqu %xmm0,64(%rdi) > +.byte 102,15,58,15,227,8 > + movdqu %xmm4,80(%rdi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size gcm_init_clmul,.-gcm_init_clmul > +.globl gcm_gmult_clmul > +.type gcm_gmult_clmul,@function > +.align 16 > +gcm_gmult_clmul: > +.cfi_startproc > +.L_gmult_clmul: > + movdqu (%rdi),%xmm0 > + movdqa .Lbswap_mask(%rip),%xmm5 > + movdqu (%rsi),%xmm2 > + movdqu 32(%rsi),%xmm4 > +.byte 102,15,56,0,197 > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm3 > + pxor %xmm0,%xmm3 > +.byte 102,15,58,68,194,0 > +.byte 102,15,58,68,202,17 > +.byte 102,15,58,68,220,0 > + pxor %xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + > + movdqa %xmm3,%xmm4 > + psrldq $8,%xmm3 > + pslldq $8,%xmm4 > + pxor %xmm3,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > +.byte 102,15,56,0,197 > + movdqu %xmm0,(%rdi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size gcm_gmult_clmul,.-gcm_gmult_clmul > +.globl gcm_ghash_clmul > +.type gcm_ghash_clmul,@function > +.align 32 > +gcm_ghash_clmul: > +.cfi_startproc > +.L_ghash_clmul: > + movdqa .Lbswap_mask(%rip),%xmm10 > + > + movdqu (%rdi),%xmm0 > + movdqu (%rsi),%xmm2 > + movdqu 32(%rsi),%xmm7 > +.byte 102,65,15,56,0,194 > + > + subq $0x10,%rcx > + jz .Lodd_tail > + > + movdqu 16(%rsi),%xmm6 > + movl OPENSSL_ia32cap_P+4(%rip),%eax > + cmpq $0x30,%rcx > + jb .Lskip4x > + > + andl $71303168,%eax > + cmpl $4194304,%eax > + je .Lskip4x > + > + subq $0x30,%rcx > + movq $0xA040608020C0E000,%rax > + movdqu 48(%rsi),%xmm14 > + movdqu 64(%rsi),%xmm15 > + > + > + > + > + movdqu 48(%rdx),%xmm3 > + movdqu 32(%rdx),%xmm11 > +.byte 102,65,15,56,0,218 > +.byte 102,69,15,56,0,218 > + movdqa %xmm3,%xmm5 > + pshufd $78,%xmm3,%xmm4 > + pxor %xmm3,%xmm4 > +.byte 102,15,58,68,218,0 > +.byte 102,15,58,68,234,17 > +.byte 102,15,58,68,231,0 > + > + movdqa %xmm11,%xmm13 > + pshufd $78,%xmm11,%xmm12 > + pxor %xmm11,%xmm12 > +.byte 102,68,15,58,68,222,0 > +.byte 102,68,15,58,68,238,17 > +.byte 102,68,15,58,68,231,16 > + xorps %xmm11,%xmm3 > + xorps %xmm13,%xmm5 > + movups 80(%rsi),%xmm7 > + xorps %xmm12,%xmm4 > + > + movdqu 16(%rdx),%xmm11 > + movdqu 0(%rdx),%xmm8 > +.byte 102,69,15,56,0,218 > +.byte 102,69,15,56,0,194 > + movdqa %xmm11,%xmm13 > + pshufd $78,%xmm11,%xmm12 > + pxor %xmm8,%xmm0 > + pxor %xmm11,%xmm12 > +.byte 102,69,15,58,68,222,0 > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm8 > + pxor %xmm0,%xmm8 > +.byte 102,69,15,58,68,238,17 > +.byte 102,68,15,58,68,231,0 > + xorps %xmm11,%xmm3 > + xorps %xmm13,%xmm5 > + > + leaq 64(%rdx),%rdx > + subq $0x40,%rcx > + jc .Ltail4x > + > + jmp .Lmod4_loop > +.align 32 > +.Lmod4_loop: > +.byte 102,65,15,58,68,199,0 > + xorps %xmm12,%xmm4 > + movdqu 48(%rdx),%xmm11 > +.byte 102,69,15,56,0,218 > +.byte 102,65,15,58,68,207,17 > + xorps %xmm3,%xmm0 > + movdqu 32(%rdx),%xmm3 > + movdqa %xmm11,%xmm13 > +.byte 102,68,15,58,68,199,16 > + pshufd $78,%xmm11,%xmm12 > + xorps %xmm5,%xmm1 > + pxor %xmm11,%xmm12 > +.byte 102,65,15,56,0,218 > + movups 32(%rsi),%xmm7 > + xorps %xmm4,%xmm8 > +.byte 102,68,15,58,68,218,0 > + pshufd $78,%xmm3,%xmm4 > + > + pxor %xmm0,%xmm8 > + movdqa %xmm3,%xmm5 > + pxor %xmm1,%xmm8 > + pxor %xmm3,%xmm4 > + movdqa %xmm8,%xmm9 > +.byte 102,68,15,58,68,234,17 > + pslldq $8,%xmm8 > + psrldq $8,%xmm9 > + pxor %xmm8,%xmm0 > + movdqa .L7_mask(%rip),%xmm8 > + pxor %xmm9,%xmm1 > +.byte 102,76,15,110,200 > + > + pand %xmm0,%xmm8 > +.byte 102,69,15,56,0,200 > + pxor %xmm0,%xmm9 > +.byte 102,68,15,58,68,231,0 > + psllq $57,%xmm9 > + movdqa %xmm9,%xmm8 > + pslldq $8,%xmm9 > +.byte 102,15,58,68,222,0 > + psrldq $8,%xmm8 > + pxor %xmm9,%xmm0 > + pxor %xmm8,%xmm1 > + movdqu 0(%rdx),%xmm8 > + > + movdqa %xmm0,%xmm9 > + psrlq $1,%xmm0 > +.byte 102,15,58,68,238,17 > + xorps %xmm11,%xmm3 > + movdqu 16(%rdx),%xmm11 > +.byte 102,69,15,56,0,218 > +.byte 102,15,58,68,231,16 > + xorps %xmm13,%xmm5 > + movups 80(%rsi),%xmm7 > +.byte 102,69,15,56,0,194 > + pxor %xmm9,%xmm1 > + pxor %xmm0,%xmm9 > + psrlq $5,%xmm0 > + > + movdqa %xmm11,%xmm13 > + pxor %xmm12,%xmm4 > + pshufd $78,%xmm11,%xmm12 > + pxor %xmm9,%xmm0 > + pxor %xmm8,%xmm1 > + pxor %xmm11,%xmm12 > +.byte 102,69,15,58,68,222,0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + movdqa %xmm0,%xmm1 > +.byte 102,69,15,58,68,238,17 > + xorps %xmm11,%xmm3 > + pshufd $78,%xmm0,%xmm8 > + pxor %xmm0,%xmm8 > + > +.byte 102,68,15,58,68,231,0 > + xorps %xmm13,%xmm5 > + > + leaq 64(%rdx),%rdx > + subq $0x40,%rcx > + jnc .Lmod4_loop > + > +.Ltail4x: > +.byte 102,65,15,58,68,199,0 > +.byte 102,65,15,58,68,207,17 > +.byte 102,68,15,58,68,199,16 > + xorps %xmm12,%xmm4 > + xorps %xmm3,%xmm0 > + xorps %xmm5,%xmm1 > + pxor %xmm0,%xmm1 > + pxor %xmm4,%xmm8 > + > + pxor %xmm1,%xmm8 > + pxor %xmm0,%xmm1 > + > + movdqa %xmm8,%xmm9 > + psrldq $8,%xmm8 > + pslldq $8,%xmm9 > + pxor %xmm8,%xmm1 > + pxor %xmm9,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + addq $0x40,%rcx > + jz .Ldone > + movdqu 32(%rsi),%xmm7 > + subq $0x10,%rcx > + jz .Lodd_tail > +.Lskip4x: > + > + > + > + > + > + movdqu (%rdx),%xmm8 > + movdqu 16(%rdx),%xmm3 > +.byte 102,69,15,56,0,194 > +.byte 102,65,15,56,0,218 > + pxor %xmm8,%xmm0 > + > + movdqa %xmm3,%xmm5 > + pshufd $78,%xmm3,%xmm4 > + pxor %xmm3,%xmm4 > +.byte 102,15,58,68,218,0 > +.byte 102,15,58,68,234,17 > +.byte 102,15,58,68,231,0 > + > + leaq 32(%rdx),%rdx > + nop > + subq $0x20,%rcx > + jbe .Leven_tail > + nop > + jmp .Lmod_loop > + > +.align 32 > +.Lmod_loop: > + movdqa %xmm0,%xmm1 > + movdqa %xmm4,%xmm8 > + pshufd $78,%xmm0,%xmm4 > + pxor %xmm0,%xmm4 > + > +.byte 102,15,58,68,198,0 > +.byte 102,15,58,68,206,17 > +.byte 102,15,58,68,231,16 > + > + pxor %xmm3,%xmm0 > + pxor %xmm5,%xmm1 > + movdqu (%rdx),%xmm9 > + pxor %xmm0,%xmm8 > +.byte 102,69,15,56,0,202 > + movdqu 16(%rdx),%xmm3 > + > + pxor %xmm1,%xmm8 > + pxor %xmm9,%xmm1 > + pxor %xmm8,%xmm4 > +.byte 102,65,15,56,0,218 > + movdqa %xmm4,%xmm8 > + psrldq $8,%xmm8 > + pslldq $8,%xmm4 > + pxor %xmm8,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm3,%xmm5 > + > + movdqa %xmm0,%xmm9 > + movdqa %xmm0,%xmm8 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm8 > +.byte 102,15,58,68,218,0 > + psllq $1,%xmm0 > + pxor %xmm8,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm8 > + pslldq $8,%xmm0 > + psrldq $8,%xmm8 > + pxor %xmm9,%xmm0 > + pshufd $78,%xmm5,%xmm4 > + pxor %xmm8,%xmm1 > + pxor %xmm5,%xmm4 > + > + movdqa %xmm0,%xmm9 > + psrlq $1,%xmm0 > +.byte 102,15,58,68,234,17 > + pxor %xmm9,%xmm1 > + pxor %xmm0,%xmm9 > + psrlq $5,%xmm0 > + pxor %xmm9,%xmm0 > + leaq 32(%rdx),%rdx > + psrlq $1,%xmm0 > +.byte 102,15,58,68,231,0 > + pxor %xmm1,%xmm0 > + > + subq $0x20,%rcx > + ja .Lmod_loop > + > +.Leven_tail: > + movdqa %xmm0,%xmm1 > + movdqa %xmm4,%xmm8 > + pshufd $78,%xmm0,%xmm4 > + pxor %xmm0,%xmm4 > + > +.byte 102,15,58,68,198,0 > +.byte 102,15,58,68,206,17 > +.byte 102,15,58,68,231,16 > + > + pxor %xmm3,%xmm0 > + pxor %xmm5,%xmm1 > + pxor %xmm0,%xmm8 > + pxor %xmm1,%xmm8 > + pxor %xmm8,%xmm4 > + movdqa %xmm4,%xmm8 > + psrldq $8,%xmm8 > + pslldq $8,%xmm4 > + pxor %xmm8,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > + testq %rcx,%rcx > + jnz .Ldone > + > +.Lodd_tail: > + movdqu (%rdx),%xmm8 > +.byte 102,69,15,56,0,194 > + pxor %xmm8,%xmm0 > + movdqa %xmm0,%xmm1 > + pshufd $78,%xmm0,%xmm3 > + pxor %xmm0,%xmm3 > +.byte 102,15,58,68,194,0 > +.byte 102,15,58,68,202,17 > +.byte 102,15,58,68,223,0 > + pxor %xmm0,%xmm3 > + pxor %xmm1,%xmm3 > + > + movdqa %xmm3,%xmm4 > + psrldq $8,%xmm3 > + pslldq $8,%xmm4 > + pxor %xmm3,%xmm1 > + pxor %xmm4,%xmm0 > + > + movdqa %xmm0,%xmm4 > + movdqa %xmm0,%xmm3 > + psllq $5,%xmm0 > + pxor %xmm0,%xmm3 > + psllq $1,%xmm0 > + pxor %xmm3,%xmm0 > + psllq $57,%xmm0 > + movdqa %xmm0,%xmm3 > + pslldq $8,%xmm0 > + psrldq $8,%xmm3 > + pxor %xmm4,%xmm0 > + pxor %xmm3,%xmm1 > + > + > + movdqa %xmm0,%xmm4 > + psrlq $1,%xmm0 > + pxor %xmm4,%xmm1 > + pxor %xmm0,%xmm4 > + psrlq $5,%xmm0 > + pxor %xmm4,%xmm0 > + psrlq $1,%xmm0 > + pxor %xmm1,%xmm0 > +.Ldone: > +.byte 102,65,15,56,0,194 > + movdqu %xmm0,(%rdi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size gcm_ghash_clmul,.-gcm_ghash_clmul > +.globl gcm_init_avx > +.type gcm_init_avx,@function > +.align 32 > +gcm_init_avx: > +.cfi_startproc > + jmp .L_init_clmul > +.cfi_endproc > +.size gcm_init_avx,.-gcm_init_avx > +.globl gcm_gmult_avx > +.type gcm_gmult_avx,@function > +.align 32 > +gcm_gmult_avx: > +.cfi_startproc > + jmp .L_gmult_clmul > +.cfi_endproc > +.size gcm_gmult_avx,.-gcm_gmult_avx > +.globl gcm_ghash_avx > +.type gcm_ghash_avx,@function > +.align 32 > +gcm_ghash_avx: > +.cfi_startproc > + jmp .L_ghash_clmul > +.cfi_endproc > +.size gcm_ghash_avx,.-gcm_ghash_avx > +.align 64 > +.Lbswap_mask: > +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 > +.L0x1c2_polynomial: > +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 > +.L7_mask: > +.long 7,0,7,0 > +.L7_mask_poly: > +.long 7,0,450,0 > +.align 64 > +.type .Lrem_4bit,@object > +.Lrem_4bit: > +.long 0,0,0,471859200,0,943718400,0,610271232 > +.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208 > +.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008 > +.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160 > +.type .Lrem_8bit,@object > +.Lrem_8bit: > +.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E > +.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E > +.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E > +.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E > +.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E > +.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E > +.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E > +.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E > +.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE > +.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE > +.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE > +.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE > +.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E > +.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E > +.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE > +.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE > +.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E > +.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E > +.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E > +.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E > +.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E > +.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E > +.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E > +.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E > +.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE > +.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE > +.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE > +.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE > +.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E > +.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E > +.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE > +.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE > + > +.byte > 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,= 79, > 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115= , > 108,46,111,114,103,62,0 > +.align 64 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_6= 4.S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S > new file mode 100644 > index 0000000000..4572bc7227 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S > @@ -0,0 +1,2962 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl > +# > +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > + > +.globl sha1_multi_block > +.type sha1_multi_block,@function > +.align 32 > +sha1_multi_block: > +.cfi_startproc > + movq OPENSSL_ia32cap_P+4(%rip),%rcx > + btq $61,%rcx > + jc _shaext_shortcut > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbx,-24 > + subq $288,%rsp > + andq $-256,%rsp > + movq %rax,272(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 > +.Lbody: > + leaq K_XX_XX(%rip),%rbp > + leaq 256(%rsp),%rbx > + > +.Loop_grande: > + movl %edx,280(%rsp) > + xorl %edx,%edx > + movq 0(%rsi),%r8 > + movl 8(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,0(%rbx) > + cmovleq %rbp,%r8 > + movq 16(%rsi),%r9 > + movl 24(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,4(%rbx) > + cmovleq %rbp,%r9 > + movq 32(%rsi),%r10 > + movl 40(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,8(%rbx) > + cmovleq %rbp,%r10 > + movq 48(%rsi),%r11 > + movl 56(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,12(%rbx) > + cmovleq %rbp,%r11 > + testl %edx,%edx > + jz .Ldone > + > + movdqu 0(%rdi),%xmm10 > + leaq 128(%rsp),%rax > + movdqu 32(%rdi),%xmm11 > + movdqu 64(%rdi),%xmm12 > + movdqu 96(%rdi),%xmm13 > + movdqu 128(%rdi),%xmm14 > + movdqa 96(%rbp),%xmm5 > + movdqa -32(%rbp),%xmm15 > + jmp .Loop > + > +.align 32 > +.Loop: > + movd (%r8),%xmm0 > + leaq 64(%r8),%r8 > + movd (%r9),%xmm2 > + leaq 64(%r9),%r9 > + movd (%r10),%xmm3 > + leaq 64(%r10),%r10 > + movd (%r11),%xmm4 > + leaq 64(%r11),%r11 > + punpckldq %xmm3,%xmm0 > + movd -60(%r8),%xmm1 > + punpckldq %xmm4,%xmm2 > + movd -60(%r9),%xmm9 > + punpckldq %xmm2,%xmm0 > + movd -60(%r10),%xmm8 > +.byte 102,15,56,0,197 > + movd -60(%r11),%xmm7 > + punpckldq %xmm8,%xmm1 > + movdqa %xmm10,%xmm8 > + paddd %xmm15,%xmm14 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm11,%xmm7 > + movdqa %xmm11,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm13,%xmm7 > + pand %xmm12,%xmm6 > + punpckldq %xmm9,%xmm1 > + movdqa %xmm10,%xmm9 > + > + movdqa %xmm0,0-128(%rax) > + paddd %xmm0,%xmm14 > + movd -56(%r8),%xmm2 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm11,%xmm7 > + > + por %xmm9,%xmm8 > + movd -56(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > +.byte 102,15,56,0,205 > + movd -56(%r10),%xmm8 > + por %xmm7,%xmm11 > + movd -56(%r11),%xmm7 > + punpckldq %xmm8,%xmm2 > + movdqa %xmm14,%xmm8 > + paddd %xmm15,%xmm13 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm10,%xmm7 > + movdqa %xmm10,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm12,%xmm7 > + pand %xmm11,%xmm6 > + punpckldq %xmm9,%xmm2 > + movdqa %xmm14,%xmm9 > + > + movdqa %xmm1,16-128(%rax) > + paddd %xmm1,%xmm13 > + movd -52(%r8),%xmm3 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm10,%xmm7 > + > + por %xmm9,%xmm8 > + movd -52(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > +.byte 102,15,56,0,213 > + movd -52(%r10),%xmm8 > + por %xmm7,%xmm10 > + movd -52(%r11),%xmm7 > + punpckldq %xmm8,%xmm3 > + movdqa %xmm13,%xmm8 > + paddd %xmm15,%xmm12 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm14,%xmm7 > + movdqa %xmm14,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm11,%xmm7 > + pand %xmm10,%xmm6 > + punpckldq %xmm9,%xmm3 > + movdqa %xmm13,%xmm9 > + > + movdqa %xmm2,32-128(%rax) > + paddd %xmm2,%xmm12 > + movd -48(%r8),%xmm4 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm14,%xmm7 > + > + por %xmm9,%xmm8 > + movd -48(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > +.byte 102,15,56,0,221 > + movd -48(%r10),%xmm8 > + por %xmm7,%xmm14 > + movd -48(%r11),%xmm7 > + punpckldq %xmm8,%xmm4 > + movdqa %xmm12,%xmm8 > + paddd %xmm15,%xmm11 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm13,%xmm7 > + movdqa %xmm13,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm10,%xmm7 > + pand %xmm14,%xmm6 > + punpckldq %xmm9,%xmm4 > + movdqa %xmm12,%xmm9 > + > + movdqa %xmm3,48-128(%rax) > + paddd %xmm3,%xmm11 > + movd -44(%r8),%xmm0 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm13,%xmm7 > + > + por %xmm9,%xmm8 > + movd -44(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > +.byte 102,15,56,0,229 > + movd -44(%r10),%xmm8 > + por %xmm7,%xmm13 > + movd -44(%r11),%xmm7 > + punpckldq %xmm8,%xmm0 > + movdqa %xmm11,%xmm8 > + paddd %xmm15,%xmm10 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm12,%xmm7 > + movdqa %xmm12,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm14,%xmm7 > + pand %xmm13,%xmm6 > + punpckldq %xmm9,%xmm0 > + movdqa %xmm11,%xmm9 > + > + movdqa %xmm4,64-128(%rax) > + paddd %xmm4,%xmm10 > + movd -40(%r8),%xmm1 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm12,%xmm7 > + > + por %xmm9,%xmm8 > + movd -40(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > +.byte 102,15,56,0,197 > + movd -40(%r10),%xmm8 > + por %xmm7,%xmm12 > + movd -40(%r11),%xmm7 > + punpckldq %xmm8,%xmm1 > + movdqa %xmm10,%xmm8 > + paddd %xmm15,%xmm14 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm11,%xmm7 > + movdqa %xmm11,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm13,%xmm7 > + pand %xmm12,%xmm6 > + punpckldq %xmm9,%xmm1 > + movdqa %xmm10,%xmm9 > + > + movdqa %xmm0,80-128(%rax) > + paddd %xmm0,%xmm14 > + movd -36(%r8),%xmm2 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm11,%xmm7 > + > + por %xmm9,%xmm8 > + movd -36(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > +.byte 102,15,56,0,205 > + movd -36(%r10),%xmm8 > + por %xmm7,%xmm11 > + movd -36(%r11),%xmm7 > + punpckldq %xmm8,%xmm2 > + movdqa %xmm14,%xmm8 > + paddd %xmm15,%xmm13 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm10,%xmm7 > + movdqa %xmm10,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm12,%xmm7 > + pand %xmm11,%xmm6 > + punpckldq %xmm9,%xmm2 > + movdqa %xmm14,%xmm9 > + > + movdqa %xmm1,96-128(%rax) > + paddd %xmm1,%xmm13 > + movd -32(%r8),%xmm3 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm10,%xmm7 > + > + por %xmm9,%xmm8 > + movd -32(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > +.byte 102,15,56,0,213 > + movd -32(%r10),%xmm8 > + por %xmm7,%xmm10 > + movd -32(%r11),%xmm7 > + punpckldq %xmm8,%xmm3 > + movdqa %xmm13,%xmm8 > + paddd %xmm15,%xmm12 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm14,%xmm7 > + movdqa %xmm14,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm11,%xmm7 > + pand %xmm10,%xmm6 > + punpckldq %xmm9,%xmm3 > + movdqa %xmm13,%xmm9 > + > + movdqa %xmm2,112-128(%rax) > + paddd %xmm2,%xmm12 > + movd -28(%r8),%xmm4 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm14,%xmm7 > + > + por %xmm9,%xmm8 > + movd -28(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > +.byte 102,15,56,0,221 > + movd -28(%r10),%xmm8 > + por %xmm7,%xmm14 > + movd -28(%r11),%xmm7 > + punpckldq %xmm8,%xmm4 > + movdqa %xmm12,%xmm8 > + paddd %xmm15,%xmm11 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm13,%xmm7 > + movdqa %xmm13,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm10,%xmm7 > + pand %xmm14,%xmm6 > + punpckldq %xmm9,%xmm4 > + movdqa %xmm12,%xmm9 > + > + movdqa %xmm3,128-128(%rax) > + paddd %xmm3,%xmm11 > + movd -24(%r8),%xmm0 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm13,%xmm7 > + > + por %xmm9,%xmm8 > + movd -24(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > +.byte 102,15,56,0,229 > + movd -24(%r10),%xmm8 > + por %xmm7,%xmm13 > + movd -24(%r11),%xmm7 > + punpckldq %xmm8,%xmm0 > + movdqa %xmm11,%xmm8 > + paddd %xmm15,%xmm10 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm12,%xmm7 > + movdqa %xmm12,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm14,%xmm7 > + pand %xmm13,%xmm6 > + punpckldq %xmm9,%xmm0 > + movdqa %xmm11,%xmm9 > + > + movdqa %xmm4,144-128(%rax) > + paddd %xmm4,%xmm10 > + movd -20(%r8),%xmm1 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm12,%xmm7 > + > + por %xmm9,%xmm8 > + movd -20(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > +.byte 102,15,56,0,197 > + movd -20(%r10),%xmm8 > + por %xmm7,%xmm12 > + movd -20(%r11),%xmm7 > + punpckldq %xmm8,%xmm1 > + movdqa %xmm10,%xmm8 > + paddd %xmm15,%xmm14 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm11,%xmm7 > + movdqa %xmm11,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm13,%xmm7 > + pand %xmm12,%xmm6 > + punpckldq %xmm9,%xmm1 > + movdqa %xmm10,%xmm9 > + > + movdqa %xmm0,160-128(%rax) > + paddd %xmm0,%xmm14 > + movd -16(%r8),%xmm2 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm11,%xmm7 > + > + por %xmm9,%xmm8 > + movd -16(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > +.byte 102,15,56,0,205 > + movd -16(%r10),%xmm8 > + por %xmm7,%xmm11 > + movd -16(%r11),%xmm7 > + punpckldq %xmm8,%xmm2 > + movdqa %xmm14,%xmm8 > + paddd %xmm15,%xmm13 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm10,%xmm7 > + movdqa %xmm10,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm12,%xmm7 > + pand %xmm11,%xmm6 > + punpckldq %xmm9,%xmm2 > + movdqa %xmm14,%xmm9 > + > + movdqa %xmm1,176-128(%rax) > + paddd %xmm1,%xmm13 > + movd -12(%r8),%xmm3 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm10,%xmm7 > + > + por %xmm9,%xmm8 > + movd -12(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > +.byte 102,15,56,0,213 > + movd -12(%r10),%xmm8 > + por %xmm7,%xmm10 > + movd -12(%r11),%xmm7 > + punpckldq %xmm8,%xmm3 > + movdqa %xmm13,%xmm8 > + paddd %xmm15,%xmm12 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm14,%xmm7 > + movdqa %xmm14,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm11,%xmm7 > + pand %xmm10,%xmm6 > + punpckldq %xmm9,%xmm3 > + movdqa %xmm13,%xmm9 > + > + movdqa %xmm2,192-128(%rax) > + paddd %xmm2,%xmm12 > + movd -8(%r8),%xmm4 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm14,%xmm7 > + > + por %xmm9,%xmm8 > + movd -8(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > +.byte 102,15,56,0,221 > + movd -8(%r10),%xmm8 > + por %xmm7,%xmm14 > + movd -8(%r11),%xmm7 > + punpckldq %xmm8,%xmm4 > + movdqa %xmm12,%xmm8 > + paddd %xmm15,%xmm11 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm13,%xmm7 > + movdqa %xmm13,%xmm6 > + pslld $5,%xmm8 > + pandn %xmm10,%xmm7 > + pand %xmm14,%xmm6 > + punpckldq %xmm9,%xmm4 > + movdqa %xmm12,%xmm9 > + > + movdqa %xmm3,208-128(%rax) > + paddd %xmm3,%xmm11 > + movd -4(%r8),%xmm0 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm13,%xmm7 > + > + por %xmm9,%xmm8 > + movd -4(%r9),%xmm9 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > +.byte 102,15,56,0,229 > + movd -4(%r10),%xmm8 > + por %xmm7,%xmm13 > + movdqa 0-128(%rax),%xmm1 > + movd -4(%r11),%xmm7 > + punpckldq %xmm8,%xmm0 > + movdqa %xmm11,%xmm8 > + paddd %xmm15,%xmm10 > + punpckldq %xmm7,%xmm9 > + movdqa %xmm12,%xmm7 > + movdqa %xmm12,%xmm6 > + pslld $5,%xmm8 > + prefetcht0 63(%r8) > + pandn %xmm14,%xmm7 > + pand %xmm13,%xmm6 > + punpckldq %xmm9,%xmm0 > + movdqa %xmm11,%xmm9 > + > + movdqa %xmm4,224-128(%rax) > + paddd %xmm4,%xmm10 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + movdqa %xmm12,%xmm7 > + prefetcht0 63(%r9) > + > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm10 > + prefetcht0 63(%r10) > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > +.byte 102,15,56,0,197 > + prefetcht0 63(%r11) > + por %xmm7,%xmm12 > + movdqa 16-128(%rax),%xmm2 > + pxor %xmm3,%xmm1 > + movdqa 32-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + pxor 128-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + movdqa %xmm11,%xmm7 > + pslld $5,%xmm8 > + pxor %xmm3,%xmm1 > + movdqa %xmm11,%xmm6 > + pandn %xmm13,%xmm7 > + movdqa %xmm1,%xmm5 > + pand %xmm12,%xmm6 > + movdqa %xmm10,%xmm9 > + psrld $31,%xmm5 > + paddd %xmm1,%xmm1 > + > + movdqa %xmm0,240-128(%rax) > + paddd %xmm0,%xmm14 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + > + movdqa %xmm11,%xmm7 > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 48-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + pxor 144-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + movdqa %xmm10,%xmm7 > + pslld $5,%xmm8 > + pxor %xmm4,%xmm2 > + movdqa %xmm10,%xmm6 > + pandn %xmm12,%xmm7 > + movdqa %xmm2,%xmm5 > + pand %xmm11,%xmm6 > + movdqa %xmm14,%xmm9 > + psrld $31,%xmm5 > + paddd %xmm2,%xmm2 > + > + movdqa %xmm1,0-128(%rax) > + paddd %xmm1,%xmm13 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + > + movdqa %xmm10,%xmm7 > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 64-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + pxor 160-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + movdqa %xmm14,%xmm7 > + pslld $5,%xmm8 > + pxor %xmm0,%xmm3 > + movdqa %xmm14,%xmm6 > + pandn %xmm11,%xmm7 > + movdqa %xmm3,%xmm5 > + pand %xmm10,%xmm6 > + movdqa %xmm13,%xmm9 > + psrld $31,%xmm5 > + paddd %xmm3,%xmm3 > + > + movdqa %xmm2,16-128(%rax) > + paddd %xmm2,%xmm12 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + > + movdqa %xmm14,%xmm7 > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 80-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + pxor 176-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + movdqa %xmm13,%xmm7 > + pslld $5,%xmm8 > + pxor %xmm1,%xmm4 > + movdqa %xmm13,%xmm6 > + pandn %xmm10,%xmm7 > + movdqa %xmm4,%xmm5 > + pand %xmm14,%xmm6 > + movdqa %xmm12,%xmm9 > + psrld $31,%xmm5 > + paddd %xmm4,%xmm4 > + > + movdqa %xmm3,32-128(%rax) > + paddd %xmm3,%xmm11 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + > + movdqa %xmm13,%xmm7 > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 96-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + pxor 192-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + movdqa %xmm12,%xmm7 > + pslld $5,%xmm8 > + pxor %xmm2,%xmm0 > + movdqa %xmm12,%xmm6 > + pandn %xmm14,%xmm7 > + movdqa %xmm0,%xmm5 > + pand %xmm13,%xmm6 > + movdqa %xmm11,%xmm9 > + psrld $31,%xmm5 > + paddd %xmm0,%xmm0 > + > + movdqa %xmm4,48-128(%rax) > + paddd %xmm4,%xmm10 > + psrld $27,%xmm9 > + pxor %xmm7,%xmm6 > + > + movdqa %xmm12,%xmm7 > + por %xmm9,%xmm8 > + pslld $30,%xmm7 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + movdqa 0(%rbp),%xmm15 > + pxor %xmm3,%xmm1 > + movdqa 112-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 208-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,64-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 128-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 224-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,80-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 144-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 240-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,96-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 160-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 0-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,112-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 176-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 16-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,128-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 192-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 32-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,144-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 208-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 48-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,160-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 224-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 64-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,176-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 240-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 80-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,192-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 0-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 96-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,208-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 16-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 112-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,224-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 32-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 128-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,240-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 48-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 144-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,0-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 64-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 160-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,16-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 80-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 176-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,32-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 96-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 192-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,48-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 112-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 208-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,64-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 128-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 224-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,80-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 144-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 240-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,96-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 160-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 0-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,112-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + movdqa 32(%rbp),%xmm15 > + pxor %xmm3,%xmm1 > + movdqa 176-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm7 > + pxor 16-128(%rax),%xmm1 > + pxor %xmm3,%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + movdqa %xmm10,%xmm9 > + pand %xmm12,%xmm7 > + > + movdqa %xmm13,%xmm6 > + movdqa %xmm1,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm14 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm0,128-128(%rax) > + paddd %xmm0,%xmm14 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm11,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm1,%xmm1 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 192-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm7 > + pxor 32-128(%rax),%xmm2 > + pxor %xmm4,%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + movdqa %xmm14,%xmm9 > + pand %xmm11,%xmm7 > + > + movdqa %xmm12,%xmm6 > + movdqa %xmm2,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm13 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm1,144-128(%rax) > + paddd %xmm1,%xmm13 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm10,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm2,%xmm2 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 208-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm7 > + pxor 48-128(%rax),%xmm3 > + pxor %xmm0,%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + movdqa %xmm13,%xmm9 > + pand %xmm10,%xmm7 > + > + movdqa %xmm11,%xmm6 > + movdqa %xmm3,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm12 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm2,160-128(%rax) > + paddd %xmm2,%xmm12 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm14,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm3,%xmm3 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 224-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm7 > + pxor 64-128(%rax),%xmm4 > + pxor %xmm1,%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + movdqa %xmm12,%xmm9 > + pand %xmm14,%xmm7 > + > + movdqa %xmm10,%xmm6 > + movdqa %xmm4,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm11 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm3,176-128(%rax) > + paddd %xmm3,%xmm11 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm13,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm4,%xmm4 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 240-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm7 > + pxor 80-128(%rax),%xmm0 > + pxor %xmm2,%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + movdqa %xmm11,%xmm9 > + pand %xmm13,%xmm7 > + > + movdqa %xmm14,%xmm6 > + movdqa %xmm0,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm10 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm4,192-128(%rax) > + paddd %xmm4,%xmm10 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm12,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm0,%xmm0 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 0-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm7 > + pxor 96-128(%rax),%xmm1 > + pxor %xmm3,%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + movdqa %xmm10,%xmm9 > + pand %xmm12,%xmm7 > + > + movdqa %xmm13,%xmm6 > + movdqa %xmm1,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm14 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm0,208-128(%rax) > + paddd %xmm0,%xmm14 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm11,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm1,%xmm1 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 16-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm7 > + pxor 112-128(%rax),%xmm2 > + pxor %xmm4,%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + movdqa %xmm14,%xmm9 > + pand %xmm11,%xmm7 > + > + movdqa %xmm12,%xmm6 > + movdqa %xmm2,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm13 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm1,224-128(%rax) > + paddd %xmm1,%xmm13 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm10,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm2,%xmm2 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 32-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm7 > + pxor 128-128(%rax),%xmm3 > + pxor %xmm0,%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + movdqa %xmm13,%xmm9 > + pand %xmm10,%xmm7 > + > + movdqa %xmm11,%xmm6 > + movdqa %xmm3,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm12 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm2,240-128(%rax) > + paddd %xmm2,%xmm12 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm14,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm3,%xmm3 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 48-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm7 > + pxor 144-128(%rax),%xmm4 > + pxor %xmm1,%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + movdqa %xmm12,%xmm9 > + pand %xmm14,%xmm7 > + > + movdqa %xmm10,%xmm6 > + movdqa %xmm4,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm11 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm3,0-128(%rax) > + paddd %xmm3,%xmm11 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm13,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm4,%xmm4 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 64-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm7 > + pxor 160-128(%rax),%xmm0 > + pxor %xmm2,%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + movdqa %xmm11,%xmm9 > + pand %xmm13,%xmm7 > + > + movdqa %xmm14,%xmm6 > + movdqa %xmm0,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm10 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm4,16-128(%rax) > + paddd %xmm4,%xmm10 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm12,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm0,%xmm0 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 80-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm7 > + pxor 176-128(%rax),%xmm1 > + pxor %xmm3,%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + movdqa %xmm10,%xmm9 > + pand %xmm12,%xmm7 > + > + movdqa %xmm13,%xmm6 > + movdqa %xmm1,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm14 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm0,32-128(%rax) > + paddd %xmm0,%xmm14 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm11,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm1,%xmm1 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 96-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm7 > + pxor 192-128(%rax),%xmm2 > + pxor %xmm4,%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + movdqa %xmm14,%xmm9 > + pand %xmm11,%xmm7 > + > + movdqa %xmm12,%xmm6 > + movdqa %xmm2,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm13 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm1,48-128(%rax) > + paddd %xmm1,%xmm13 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm10,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm2,%xmm2 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 112-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm7 > + pxor 208-128(%rax),%xmm3 > + pxor %xmm0,%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + movdqa %xmm13,%xmm9 > + pand %xmm10,%xmm7 > + > + movdqa %xmm11,%xmm6 > + movdqa %xmm3,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm12 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm2,64-128(%rax) > + paddd %xmm2,%xmm12 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm14,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm3,%xmm3 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 128-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm7 > + pxor 224-128(%rax),%xmm4 > + pxor %xmm1,%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + movdqa %xmm12,%xmm9 > + pand %xmm14,%xmm7 > + > + movdqa %xmm10,%xmm6 > + movdqa %xmm4,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm11 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm3,80-128(%rax) > + paddd %xmm3,%xmm11 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm13,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm4,%xmm4 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 144-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm7 > + pxor 240-128(%rax),%xmm0 > + pxor %xmm2,%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + movdqa %xmm11,%xmm9 > + pand %xmm13,%xmm7 > + > + movdqa %xmm14,%xmm6 > + movdqa %xmm0,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm10 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm4,96-128(%rax) > + paddd %xmm4,%xmm10 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm12,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm0,%xmm0 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 160-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm7 > + pxor 0-128(%rax),%xmm1 > + pxor %xmm3,%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + movdqa %xmm10,%xmm9 > + pand %xmm12,%xmm7 > + > + movdqa %xmm13,%xmm6 > + movdqa %xmm1,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm14 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm0,112-128(%rax) > + paddd %xmm0,%xmm14 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm11,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm1,%xmm1 > + paddd %xmm6,%xmm14 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 176-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm7 > + pxor 16-128(%rax),%xmm2 > + pxor %xmm4,%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + movdqa %xmm14,%xmm9 > + pand %xmm11,%xmm7 > + > + movdqa %xmm12,%xmm6 > + movdqa %xmm2,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm13 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm1,128-128(%rax) > + paddd %xmm1,%xmm13 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm10,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm2,%xmm2 > + paddd %xmm6,%xmm13 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 192-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm7 > + pxor 32-128(%rax),%xmm3 > + pxor %xmm0,%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + movdqa %xmm13,%xmm9 > + pand %xmm10,%xmm7 > + > + movdqa %xmm11,%xmm6 > + movdqa %xmm3,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm12 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm2,144-128(%rax) > + paddd %xmm2,%xmm12 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm14,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm3,%xmm3 > + paddd %xmm6,%xmm12 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 208-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm7 > + pxor 48-128(%rax),%xmm4 > + pxor %xmm1,%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + movdqa %xmm12,%xmm9 > + pand %xmm14,%xmm7 > + > + movdqa %xmm10,%xmm6 > + movdqa %xmm4,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm11 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm3,160-128(%rax) > + paddd %xmm3,%xmm11 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm13,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm4,%xmm4 > + paddd %xmm6,%xmm11 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 224-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm7 > + pxor 64-128(%rax),%xmm0 > + pxor %xmm2,%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + movdqa %xmm11,%xmm9 > + pand %xmm13,%xmm7 > + > + movdqa %xmm14,%xmm6 > + movdqa %xmm0,%xmm5 > + psrld $27,%xmm9 > + paddd %xmm7,%xmm10 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm4,176-128(%rax) > + paddd %xmm4,%xmm10 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + pand %xmm12,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + paddd %xmm0,%xmm0 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + movdqa 64(%rbp),%xmm15 > + pxor %xmm3,%xmm1 > + movdqa 240-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 80-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,192-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 0-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 96-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,208-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 16-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 112-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,224-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 32-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 128-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,240-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 48-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 144-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,0-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 64-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 160-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,16-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 80-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 176-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,32-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 96-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 192-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + movdqa %xmm2,48-128(%rax) > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 112-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 208-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + movdqa %xmm3,64-128(%rax) > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 128-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 224-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + movdqa %xmm4,80-128(%rax) > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 144-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 240-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + movdqa %xmm0,96-128(%rax) > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 160-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 0-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + movdqa %xmm1,112-128(%rax) > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 176-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 16-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 192-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 32-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + pxor %xmm2,%xmm0 > + movdqa 208-128(%rax),%xmm2 > + > + movdqa %xmm11,%xmm8 > + movdqa %xmm14,%xmm6 > + pxor 48-128(%rax),%xmm0 > + paddd %xmm15,%xmm10 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + paddd %xmm4,%xmm10 > + pxor %xmm2,%xmm0 > + psrld $27,%xmm9 > + pxor %xmm13,%xmm6 > + movdqa %xmm12,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm0,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm10 > + paddd %xmm0,%xmm0 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm5,%xmm0 > + por %xmm7,%xmm12 > + pxor %xmm3,%xmm1 > + movdqa 224-128(%rax),%xmm3 > + > + movdqa %xmm10,%xmm8 > + movdqa %xmm13,%xmm6 > + pxor 64-128(%rax),%xmm1 > + paddd %xmm15,%xmm14 > + pslld $5,%xmm8 > + pxor %xmm11,%xmm6 > + > + movdqa %xmm10,%xmm9 > + paddd %xmm0,%xmm14 > + pxor %xmm3,%xmm1 > + psrld $27,%xmm9 > + pxor %xmm12,%xmm6 > + movdqa %xmm11,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm1,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm14 > + paddd %xmm1,%xmm1 > + > + psrld $2,%xmm11 > + paddd %xmm8,%xmm14 > + por %xmm5,%xmm1 > + por %xmm7,%xmm11 > + pxor %xmm4,%xmm2 > + movdqa 240-128(%rax),%xmm4 > + > + movdqa %xmm14,%xmm8 > + movdqa %xmm12,%xmm6 > + pxor 80-128(%rax),%xmm2 > + paddd %xmm15,%xmm13 > + pslld $5,%xmm8 > + pxor %xmm10,%xmm6 > + > + movdqa %xmm14,%xmm9 > + paddd %xmm1,%xmm13 > + pxor %xmm4,%xmm2 > + psrld $27,%xmm9 > + pxor %xmm11,%xmm6 > + movdqa %xmm10,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm2,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm13 > + paddd %xmm2,%xmm2 > + > + psrld $2,%xmm10 > + paddd %xmm8,%xmm13 > + por %xmm5,%xmm2 > + por %xmm7,%xmm10 > + pxor %xmm0,%xmm3 > + movdqa 0-128(%rax),%xmm0 > + > + movdqa %xmm13,%xmm8 > + movdqa %xmm11,%xmm6 > + pxor 96-128(%rax),%xmm3 > + paddd %xmm15,%xmm12 > + pslld $5,%xmm8 > + pxor %xmm14,%xmm6 > + > + movdqa %xmm13,%xmm9 > + paddd %xmm2,%xmm12 > + pxor %xmm0,%xmm3 > + psrld $27,%xmm9 > + pxor %xmm10,%xmm6 > + movdqa %xmm14,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm3,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm12 > + paddd %xmm3,%xmm3 > + > + psrld $2,%xmm14 > + paddd %xmm8,%xmm12 > + por %xmm5,%xmm3 > + por %xmm7,%xmm14 > + pxor %xmm1,%xmm4 > + movdqa 16-128(%rax),%xmm1 > + > + movdqa %xmm12,%xmm8 > + movdqa %xmm10,%xmm6 > + pxor 112-128(%rax),%xmm4 > + paddd %xmm15,%xmm11 > + pslld $5,%xmm8 > + pxor %xmm13,%xmm6 > + > + movdqa %xmm12,%xmm9 > + paddd %xmm3,%xmm11 > + pxor %xmm1,%xmm4 > + psrld $27,%xmm9 > + pxor %xmm14,%xmm6 > + movdqa %xmm13,%xmm7 > + > + pslld $30,%xmm7 > + movdqa %xmm4,%xmm5 > + por %xmm9,%xmm8 > + psrld $31,%xmm5 > + paddd %xmm6,%xmm11 > + paddd %xmm4,%xmm4 > + > + psrld $2,%xmm13 > + paddd %xmm8,%xmm11 > + por %xmm5,%xmm4 > + por %xmm7,%xmm13 > + movdqa %xmm11,%xmm8 > + paddd %xmm15,%xmm10 > + movdqa %xmm14,%xmm6 > + pslld $5,%xmm8 > + pxor %xmm12,%xmm6 > + > + movdqa %xmm11,%xmm9 > + paddd %xmm4,%xmm10 > + psrld $27,%xmm9 > + movdqa %xmm12,%xmm7 > + pxor %xmm13,%xmm6 > + > + pslld $30,%xmm7 > + por %xmm9,%xmm8 > + paddd %xmm6,%xmm10 > + > + psrld $2,%xmm12 > + paddd %xmm8,%xmm10 > + por %xmm7,%xmm12 > + movdqa (%rbx),%xmm0 > + movl $1,%ecx > + cmpl 0(%rbx),%ecx > + pxor %xmm8,%xmm8 > + cmovgeq %rbp,%r8 > + cmpl 4(%rbx),%ecx > + movdqa %xmm0,%xmm1 > + cmovgeq %rbp,%r9 > + cmpl 8(%rbx),%ecx > + pcmpgtd %xmm8,%xmm1 > + cmovgeq %rbp,%r10 > + cmpl 12(%rbx),%ecx > + paddd %xmm1,%xmm0 > + cmovgeq %rbp,%r11 > + > + movdqu 0(%rdi),%xmm6 > + pand %xmm1,%xmm10 > + movdqu 32(%rdi),%xmm7 > + pand %xmm1,%xmm11 > + paddd %xmm6,%xmm10 > + movdqu 64(%rdi),%xmm8 > + pand %xmm1,%xmm12 > + paddd %xmm7,%xmm11 > + movdqu 96(%rdi),%xmm9 > + pand %xmm1,%xmm13 > + paddd %xmm8,%xmm12 > + movdqu 128(%rdi),%xmm5 > + pand %xmm1,%xmm14 > + movdqu %xmm10,0(%rdi) > + paddd %xmm9,%xmm13 > + movdqu %xmm11,32(%rdi) > + paddd %xmm5,%xmm14 > + movdqu %xmm12,64(%rdi) > + movdqu %xmm13,96(%rdi) > + movdqu %xmm14,128(%rdi) > + > + movdqa %xmm0,(%rbx) > + movdqa 96(%rbp),%xmm5 > + movdqa -32(%rbp),%xmm15 > + decl %edx > + jnz .Loop > + > + movl 280(%rsp),%edx > + leaq 16(%rdi),%rdi > + leaq 64(%rsi),%rsi > + decl %edx > + jnz .Loop_grande > + > +.Ldone: > + movq 272(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha1_multi_block,.-sha1_multi_block > +.type sha1_multi_block_shaext,@function > +.align 32 > +sha1_multi_block_shaext: > +.cfi_startproc > +_shaext_shortcut: > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + subq $288,%rsp > + shll $1,%edx > + andq $-256,%rsp > + leaq 64(%rdi),%rdi > + movq %rax,272(%rsp) > +.Lbody_shaext: > + leaq 256(%rsp),%rbx > + movdqa K_XX_XX+128(%rip),%xmm3 > + > +.Loop_grande_shaext: > + movl %edx,280(%rsp) > + xorl %edx,%edx > + movq 0(%rsi),%r8 > + movl 8(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,0(%rbx) > + cmovleq %rsp,%r8 > + movq 16(%rsi),%r9 > + movl 24(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,4(%rbx) > + cmovleq %rsp,%r9 > + testl %edx,%edx > + jz .Ldone_shaext > + > + movq 0-64(%rdi),%xmm0 > + movq 32-64(%rdi),%xmm4 > + movq 64-64(%rdi),%xmm5 > + movq 96-64(%rdi),%xmm6 > + movq 128-64(%rdi),%xmm7 > + > + punpckldq %xmm4,%xmm0 > + punpckldq %xmm6,%xmm5 > + > + movdqa %xmm0,%xmm8 > + punpcklqdq %xmm5,%xmm0 > + punpckhqdq %xmm5,%xmm8 > + > + pshufd $63,%xmm7,%xmm1 > + pshufd $127,%xmm7,%xmm9 > + pshufd $27,%xmm0,%xmm0 > + pshufd $27,%xmm8,%xmm8 > + jmp .Loop_shaext > + > +.align 32 > +.Loop_shaext: > + movdqu 0(%r8),%xmm4 > + movdqu 0(%r9),%xmm11 > + movdqu 16(%r8),%xmm5 > + movdqu 16(%r9),%xmm12 > + movdqu 32(%r8),%xmm6 > +.byte 102,15,56,0,227 > + movdqu 32(%r9),%xmm13 > +.byte 102,68,15,56,0,219 > + movdqu 48(%r8),%xmm7 > + leaq 64(%r8),%r8 > +.byte 102,15,56,0,235 > + movdqu 48(%r9),%xmm14 > + leaq 64(%r9),%r9 > +.byte 102,68,15,56,0,227 > + > + movdqa %xmm1,80(%rsp) > + paddd %xmm4,%xmm1 > + movdqa %xmm9,112(%rsp) > + paddd %xmm11,%xmm9 > + movdqa %xmm0,64(%rsp) > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,96(%rsp) > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,0 > +.byte 15,56,200,213 > +.byte 69,15,58,204,193,0 > +.byte 69,15,56,200,212 > +.byte 102,15,56,0,243 > + prefetcht0 127(%r8) > +.byte 15,56,201,229 > +.byte 102,68,15,56,0,235 > + prefetcht0 127(%r9) > +.byte 69,15,56,201,220 > + > +.byte 102,15,56,0,251 > + movdqa %xmm0,%xmm1 > +.byte 102,68,15,56,0,243 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,0 > +.byte 15,56,200,206 > +.byte 69,15,58,204,194,0 > +.byte 69,15,56,200,205 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + pxor %xmm13,%xmm11 > +.byte 69,15,56,201,229 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,0 > +.byte 15,56,200,215 > +.byte 69,15,58,204,193,0 > +.byte 69,15,56,200,214 > +.byte 15,56,202,231 > +.byte 69,15,56,202,222 > + pxor %xmm7,%xmm5 > +.byte 15,56,201,247 > + pxor %xmm14,%xmm12 > +.byte 69,15,56,201,238 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,0 > +.byte 15,56,200,204 > +.byte 69,15,58,204,194,0 > +.byte 69,15,56,200,203 > +.byte 15,56,202,236 > +.byte 69,15,56,202,227 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > + pxor %xmm11,%xmm13 > +.byte 69,15,56,201,243 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,0 > +.byte 15,56,200,213 > +.byte 69,15,58,204,193,0 > +.byte 69,15,56,200,212 > +.byte 15,56,202,245 > +.byte 69,15,56,202,236 > + pxor %xmm5,%xmm7 > +.byte 15,56,201,229 > + pxor %xmm12,%xmm14 > +.byte 69,15,56,201,220 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,1 > +.byte 15,56,200,206 > +.byte 69,15,58,204,194,1 > +.byte 69,15,56,200,205 > +.byte 15,56,202,254 > +.byte 69,15,56,202,245 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + pxor %xmm13,%xmm11 > +.byte 69,15,56,201,229 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,1 > +.byte 15,56,200,215 > +.byte 69,15,58,204,193,1 > +.byte 69,15,56,200,214 > +.byte 15,56,202,231 > +.byte 69,15,56,202,222 > + pxor %xmm7,%xmm5 > +.byte 15,56,201,247 > + pxor %xmm14,%xmm12 > +.byte 69,15,56,201,238 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,1 > +.byte 15,56,200,204 > +.byte 69,15,58,204,194,1 > +.byte 69,15,56,200,203 > +.byte 15,56,202,236 > +.byte 69,15,56,202,227 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > + pxor %xmm11,%xmm13 > +.byte 69,15,56,201,243 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,1 > +.byte 15,56,200,213 > +.byte 69,15,58,204,193,1 > +.byte 69,15,56,200,212 > +.byte 15,56,202,245 > +.byte 69,15,56,202,236 > + pxor %xmm5,%xmm7 > +.byte 15,56,201,229 > + pxor %xmm12,%xmm14 > +.byte 69,15,56,201,220 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,1 > +.byte 15,56,200,206 > +.byte 69,15,58,204,194,1 > +.byte 69,15,56,200,205 > +.byte 15,56,202,254 > +.byte 69,15,56,202,245 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + pxor %xmm13,%xmm11 > +.byte 69,15,56,201,229 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,2 > +.byte 15,56,200,215 > +.byte 69,15,58,204,193,2 > +.byte 69,15,56,200,214 > +.byte 15,56,202,231 > +.byte 69,15,56,202,222 > + pxor %xmm7,%xmm5 > +.byte 15,56,201,247 > + pxor %xmm14,%xmm12 > +.byte 69,15,56,201,238 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,2 > +.byte 15,56,200,204 > +.byte 69,15,58,204,194,2 > +.byte 69,15,56,200,203 > +.byte 15,56,202,236 > +.byte 69,15,56,202,227 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > + pxor %xmm11,%xmm13 > +.byte 69,15,56,201,243 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,2 > +.byte 15,56,200,213 > +.byte 69,15,58,204,193,2 > +.byte 69,15,56,200,212 > +.byte 15,56,202,245 > +.byte 69,15,56,202,236 > + pxor %xmm5,%xmm7 > +.byte 15,56,201,229 > + pxor %xmm12,%xmm14 > +.byte 69,15,56,201,220 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,2 > +.byte 15,56,200,206 > +.byte 69,15,58,204,194,2 > +.byte 69,15,56,200,205 > +.byte 15,56,202,254 > +.byte 69,15,56,202,245 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > + pxor %xmm13,%xmm11 > +.byte 69,15,56,201,229 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,2 > +.byte 15,56,200,215 > +.byte 69,15,58,204,193,2 > +.byte 69,15,56,200,214 > +.byte 15,56,202,231 > +.byte 69,15,56,202,222 > + pxor %xmm7,%xmm5 > +.byte 15,56,201,247 > + pxor %xmm14,%xmm12 > +.byte 69,15,56,201,238 > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,3 > +.byte 15,56,200,204 > +.byte 69,15,58,204,194,3 > +.byte 69,15,56,200,203 > +.byte 15,56,202,236 > +.byte 69,15,56,202,227 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > + pxor %xmm11,%xmm13 > +.byte 69,15,56,201,243 > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,3 > +.byte 15,56,200,213 > +.byte 69,15,58,204,193,3 > +.byte 69,15,56,200,212 > +.byte 15,56,202,245 > +.byte 69,15,56,202,236 > + pxor %xmm5,%xmm7 > + pxor %xmm12,%xmm14 > + > + movl $1,%ecx > + pxor %xmm4,%xmm4 > + cmpl 0(%rbx),%ecx > + cmovgeq %rsp,%r8 > + > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,3 > +.byte 15,56,200,206 > +.byte 69,15,58,204,194,3 > +.byte 69,15,56,200,205 > +.byte 15,56,202,254 > +.byte 69,15,56,202,245 > + > + cmpl 4(%rbx),%ecx > + cmovgeq %rsp,%r9 > + movq (%rbx),%xmm6 > + > + movdqa %xmm0,%xmm2 > + movdqa %xmm8,%xmm10 > +.byte 15,58,204,193,3 > +.byte 15,56,200,215 > +.byte 69,15,58,204,193,3 > +.byte 69,15,56,200,214 > + > + pshufd $0x00,%xmm6,%xmm11 > + pshufd $0x55,%xmm6,%xmm12 > + movdqa %xmm6,%xmm7 > + pcmpgtd %xmm4,%xmm11 > + pcmpgtd %xmm4,%xmm12 > + > + movdqa %xmm0,%xmm1 > + movdqa %xmm8,%xmm9 > +.byte 15,58,204,194,3 > +.byte 15,56,200,204 > +.byte 69,15,58,204,194,3 > +.byte 68,15,56,200,204 > + > + pcmpgtd %xmm4,%xmm7 > + pand %xmm11,%xmm0 > + pand %xmm11,%xmm1 > + pand %xmm12,%xmm8 > + pand %xmm12,%xmm9 > + paddd %xmm7,%xmm6 > + > + paddd 64(%rsp),%xmm0 > + paddd 80(%rsp),%xmm1 > + paddd 96(%rsp),%xmm8 > + paddd 112(%rsp),%xmm9 > + > + movq %xmm6,(%rbx) > + decl %edx > + jnz .Loop_shaext > + > + movl 280(%rsp),%edx > + > + pshufd $27,%xmm0,%xmm0 > + pshufd $27,%xmm8,%xmm8 > + > + movdqa %xmm0,%xmm6 > + punpckldq %xmm8,%xmm0 > + punpckhdq %xmm8,%xmm6 > + punpckhdq %xmm9,%xmm1 > + movq %xmm0,0-64(%rdi) > + psrldq $8,%xmm0 > + movq %xmm6,64-64(%rdi) > + psrldq $8,%xmm6 > + movq %xmm0,32-64(%rdi) > + psrldq $8,%xmm1 > + movq %xmm6,96-64(%rdi) > + movq %xmm1,128-64(%rdi) > + > + leaq 8(%rdi),%rdi > + leaq 32(%rsi),%rsi > + decl %edx > + jnz .Loop_grande_shaext > + > +.Ldone_shaext: > + > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue_shaext: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha1_multi_block_shaext,.-sha1_multi_block_shaext > + > +.align 256 > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +K_XX_XX: > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > +.byte > 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110= , > 115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,8= 0, > 84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,1= 1 > 5,115,108,46,111,114,103,62,0 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S > new file mode 100644 > index 0000000000..0b59726ae4 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S > @@ -0,0 +1,2631 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/sha/asm/sha1-x86_64.pl > +# > +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl sha1_block_data_order > +.type sha1_block_data_order,@function > +.align 16 > +sha1_block_data_order: > +.cfi_startproc > + movl OPENSSL_ia32cap_P+0(%rip),%r9d > + movl OPENSSL_ia32cap_P+4(%rip),%r8d > + movl OPENSSL_ia32cap_P+8(%rip),%r10d > + testl $512,%r8d > + jz .Lialu > + testl $536870912,%r10d > + jnz _shaext_shortcut > + jmp _ssse3_shortcut > + > +.align 16 > +.Lialu: > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + movq %rdi,%r8 > + subq $72,%rsp > + movq %rsi,%r9 > + andq $-64,%rsp > + movq %rdx,%r10 > + movq %rax,64(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0xc0,0x00,0x06,0x23,0x08 > +.Lprologue: > + > + movl 0(%r8),%esi > + movl 4(%r8),%edi > + movl 8(%r8),%r11d > + movl 12(%r8),%r12d > + movl 16(%r8),%r13d > + jmp .Lloop > + > +.align 16 > +.Lloop: > + movl 0(%r9),%edx > + bswapl %edx > + movl 4(%r9),%ebp > + movl %r12d,%eax > + movl %edx,0(%rsp) > + movl %esi,%ecx > + bswapl %ebp > + xorl %r11d,%eax > + roll $5,%ecx > + andl %edi,%eax > + leal 1518500249(%rdx,%r13,1),%r13d > + addl %ecx,%r13d > + xorl %r12d,%eax > + roll $30,%edi > + addl %eax,%r13d > + movl 8(%r9),%r14d > + movl %r11d,%eax > + movl %ebp,4(%rsp) > + movl %r13d,%ecx > + bswapl %r14d > + xorl %edi,%eax > + roll $5,%ecx > + andl %esi,%eax > + leal 1518500249(%rbp,%r12,1),%r12d > + addl %ecx,%r12d > + xorl %r11d,%eax > + roll $30,%esi > + addl %eax,%r12d > + movl 12(%r9),%edx > + movl %edi,%eax > + movl %r14d,8(%rsp) > + movl %r12d,%ecx > + bswapl %edx > + xorl %esi,%eax > + roll $5,%ecx > + andl %r13d,%eax > + leal 1518500249(%r14,%r11,1),%r11d > + addl %ecx,%r11d > + xorl %edi,%eax > + roll $30,%r13d > + addl %eax,%r11d > + movl 16(%r9),%ebp > + movl %esi,%eax > + movl %edx,12(%rsp) > + movl %r11d,%ecx > + bswapl %ebp > + xorl %r13d,%eax > + roll $5,%ecx > + andl %r12d,%eax > + leal 1518500249(%rdx,%rdi,1),%edi > + addl %ecx,%edi > + xorl %esi,%eax > + roll $30,%r12d > + addl %eax,%edi > + movl 20(%r9),%r14d > + movl %r13d,%eax > + movl %ebp,16(%rsp) > + movl %edi,%ecx > + bswapl %r14d > + xorl %r12d,%eax > + roll $5,%ecx > + andl %r11d,%eax > + leal 1518500249(%rbp,%rsi,1),%esi > + addl %ecx,%esi > + xorl %r13d,%eax > + roll $30,%r11d > + addl %eax,%esi > + movl 24(%r9),%edx > + movl %r12d,%eax > + movl %r14d,20(%rsp) > + movl %esi,%ecx > + bswapl %edx > + xorl %r11d,%eax > + roll $5,%ecx > + andl %edi,%eax > + leal 1518500249(%r14,%r13,1),%r13d > + addl %ecx,%r13d > + xorl %r12d,%eax > + roll $30,%edi > + addl %eax,%r13d > + movl 28(%r9),%ebp > + movl %r11d,%eax > + movl %edx,24(%rsp) > + movl %r13d,%ecx > + bswapl %ebp > + xorl %edi,%eax > + roll $5,%ecx > + andl %esi,%eax > + leal 1518500249(%rdx,%r12,1),%r12d > + addl %ecx,%r12d > + xorl %r11d,%eax > + roll $30,%esi > + addl %eax,%r12d > + movl 32(%r9),%r14d > + movl %edi,%eax > + movl %ebp,28(%rsp) > + movl %r12d,%ecx > + bswapl %r14d > + xorl %esi,%eax > + roll $5,%ecx > + andl %r13d,%eax > + leal 1518500249(%rbp,%r11,1),%r11d > + addl %ecx,%r11d > + xorl %edi,%eax > + roll $30,%r13d > + addl %eax,%r11d > + movl 36(%r9),%edx > + movl %esi,%eax > + movl %r14d,32(%rsp) > + movl %r11d,%ecx > + bswapl %edx > + xorl %r13d,%eax > + roll $5,%ecx > + andl %r12d,%eax > + leal 1518500249(%r14,%rdi,1),%edi > + addl %ecx,%edi > + xorl %esi,%eax > + roll $30,%r12d > + addl %eax,%edi > + movl 40(%r9),%ebp > + movl %r13d,%eax > + movl %edx,36(%rsp) > + movl %edi,%ecx > + bswapl %ebp > + xorl %r12d,%eax > + roll $5,%ecx > + andl %r11d,%eax > + leal 1518500249(%rdx,%rsi,1),%esi > + addl %ecx,%esi > + xorl %r13d,%eax > + roll $30,%r11d > + addl %eax,%esi > + movl 44(%r9),%r14d > + movl %r12d,%eax > + movl %ebp,40(%rsp) > + movl %esi,%ecx > + bswapl %r14d > + xorl %r11d,%eax > + roll $5,%ecx > + andl %edi,%eax > + leal 1518500249(%rbp,%r13,1),%r13d > + addl %ecx,%r13d > + xorl %r12d,%eax > + roll $30,%edi > + addl %eax,%r13d > + movl 48(%r9),%edx > + movl %r11d,%eax > + movl %r14d,44(%rsp) > + movl %r13d,%ecx > + bswapl %edx > + xorl %edi,%eax > + roll $5,%ecx > + andl %esi,%eax > + leal 1518500249(%r14,%r12,1),%r12d > + addl %ecx,%r12d > + xorl %r11d,%eax > + roll $30,%esi > + addl %eax,%r12d > + movl 52(%r9),%ebp > + movl %edi,%eax > + movl %edx,48(%rsp) > + movl %r12d,%ecx > + bswapl %ebp > + xorl %esi,%eax > + roll $5,%ecx > + andl %r13d,%eax > + leal 1518500249(%rdx,%r11,1),%r11d > + addl %ecx,%r11d > + xorl %edi,%eax > + roll $30,%r13d > + addl %eax,%r11d > + movl 56(%r9),%r14d > + movl %esi,%eax > + movl %ebp,52(%rsp) > + movl %r11d,%ecx > + bswapl %r14d > + xorl %r13d,%eax > + roll $5,%ecx > + andl %r12d,%eax > + leal 1518500249(%rbp,%rdi,1),%edi > + addl %ecx,%edi > + xorl %esi,%eax > + roll $30,%r12d > + addl %eax,%edi > + movl 60(%r9),%edx > + movl %r13d,%eax > + movl %r14d,56(%rsp) > + movl %edi,%ecx > + bswapl %edx > + xorl %r12d,%eax > + roll $5,%ecx > + andl %r11d,%eax > + leal 1518500249(%r14,%rsi,1),%esi > + addl %ecx,%esi > + xorl %r13d,%eax > + roll $30,%r11d > + addl %eax,%esi > + xorl 0(%rsp),%ebp > + movl %r12d,%eax > + movl %edx,60(%rsp) > + movl %esi,%ecx > + xorl 8(%rsp),%ebp > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 32(%rsp),%ebp > + andl %edi,%eax > + leal 1518500249(%rdx,%r13,1),%r13d > + roll $30,%edi > + xorl %r12d,%eax > + addl %ecx,%r13d > + roll $1,%ebp > + addl %eax,%r13d > + xorl 4(%rsp),%r14d > + movl %r11d,%eax > + movl %ebp,0(%rsp) > + movl %r13d,%ecx > + xorl 12(%rsp),%r14d > + xorl %edi,%eax > + roll $5,%ecx > + xorl 36(%rsp),%r14d > + andl %esi,%eax > + leal 1518500249(%rbp,%r12,1),%r12d > + roll $30,%esi > + xorl %r11d,%eax > + addl %ecx,%r12d > + roll $1,%r14d > + addl %eax,%r12d > + xorl 8(%rsp),%edx > + movl %edi,%eax > + movl %r14d,4(%rsp) > + movl %r12d,%ecx > + xorl 16(%rsp),%edx > + xorl %esi,%eax > + roll $5,%ecx > + xorl 40(%rsp),%edx > + andl %r13d,%eax > + leal 1518500249(%r14,%r11,1),%r11d > + roll $30,%r13d > + xorl %edi,%eax > + addl %ecx,%r11d > + roll $1,%edx > + addl %eax,%r11d > + xorl 12(%rsp),%ebp > + movl %esi,%eax > + movl %edx,8(%rsp) > + movl %r11d,%ecx > + xorl 20(%rsp),%ebp > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 44(%rsp),%ebp > + andl %r12d,%eax > + leal 1518500249(%rdx,%rdi,1),%edi > + roll $30,%r12d > + xorl %esi,%eax > + addl %ecx,%edi > + roll $1,%ebp > + addl %eax,%edi > + xorl 16(%rsp),%r14d > + movl %r13d,%eax > + movl %ebp,12(%rsp) > + movl %edi,%ecx > + xorl 24(%rsp),%r14d > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 48(%rsp),%r14d > + andl %r11d,%eax > + leal 1518500249(%rbp,%rsi,1),%esi > + roll $30,%r11d > + xorl %r13d,%eax > + addl %ecx,%esi > + roll $1,%r14d > + addl %eax,%esi > + xorl 20(%rsp),%edx > + movl %edi,%eax > + movl %r14d,16(%rsp) > + movl %esi,%ecx > + xorl 28(%rsp),%edx > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 52(%rsp),%edx > + leal 1859775393(%r14,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%edx > + xorl 24(%rsp),%ebp > + movl %esi,%eax > + movl %edx,20(%rsp) > + movl %r13d,%ecx > + xorl 32(%rsp),%ebp > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 56(%rsp),%ebp > + leal 1859775393(%rdx,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%ebp > + xorl 28(%rsp),%r14d > + movl %r13d,%eax > + movl %ebp,24(%rsp) > + movl %r12d,%ecx > + xorl 36(%rsp),%r14d > + xorl %edi,%eax > + roll $5,%ecx > + xorl 60(%rsp),%r14d > + leal 1859775393(%rbp,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%r14d > + xorl 32(%rsp),%edx > + movl %r12d,%eax > + movl %r14d,28(%rsp) > + movl %r11d,%ecx > + xorl 40(%rsp),%edx > + xorl %esi,%eax > + roll $5,%ecx > + xorl 0(%rsp),%edx > + leal 1859775393(%r14,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%edx > + xorl 36(%rsp),%ebp > + movl %r11d,%eax > + movl %edx,32(%rsp) > + movl %edi,%ecx > + xorl 44(%rsp),%ebp > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 4(%rsp),%ebp > + leal 1859775393(%rdx,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%ebp > + xorl 40(%rsp),%r14d > + movl %edi,%eax > + movl %ebp,36(%rsp) > + movl %esi,%ecx > + xorl 48(%rsp),%r14d > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 8(%rsp),%r14d > + leal 1859775393(%rbp,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%r14d > + xorl 44(%rsp),%edx > + movl %esi,%eax > + movl %r14d,40(%rsp) > + movl %r13d,%ecx > + xorl 52(%rsp),%edx > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 12(%rsp),%edx > + leal 1859775393(%r14,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%edx > + xorl 48(%rsp),%ebp > + movl %r13d,%eax > + movl %edx,44(%rsp) > + movl %r12d,%ecx > + xorl 56(%rsp),%ebp > + xorl %edi,%eax > + roll $5,%ecx > + xorl 16(%rsp),%ebp > + leal 1859775393(%rdx,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%ebp > + xorl 52(%rsp),%r14d > + movl %r12d,%eax > + movl %ebp,48(%rsp) > + movl %r11d,%ecx > + xorl 60(%rsp),%r14d > + xorl %esi,%eax > + roll $5,%ecx > + xorl 20(%rsp),%r14d > + leal 1859775393(%rbp,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%r14d > + xorl 56(%rsp),%edx > + movl %r11d,%eax > + movl %r14d,52(%rsp) > + movl %edi,%ecx > + xorl 0(%rsp),%edx > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 24(%rsp),%edx > + leal 1859775393(%r14,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%edx > + xorl 60(%rsp),%ebp > + movl %edi,%eax > + movl %edx,56(%rsp) > + movl %esi,%ecx > + xorl 4(%rsp),%ebp > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 28(%rsp),%ebp > + leal 1859775393(%rdx,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%ebp > + xorl 0(%rsp),%r14d > + movl %esi,%eax > + movl %ebp,60(%rsp) > + movl %r13d,%ecx > + xorl 8(%rsp),%r14d > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 32(%rsp),%r14d > + leal 1859775393(%rbp,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%r14d > + xorl 4(%rsp),%edx > + movl %r13d,%eax > + movl %r14d,0(%rsp) > + movl %r12d,%ecx > + xorl 12(%rsp),%edx > + xorl %edi,%eax > + roll $5,%ecx > + xorl 36(%rsp),%edx > + leal 1859775393(%r14,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%edx > + xorl 8(%rsp),%ebp > + movl %r12d,%eax > + movl %edx,4(%rsp) > + movl %r11d,%ecx > + xorl 16(%rsp),%ebp > + xorl %esi,%eax > + roll $5,%ecx > + xorl 40(%rsp),%ebp > + leal 1859775393(%rdx,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%ebp > + xorl 12(%rsp),%r14d > + movl %r11d,%eax > + movl %ebp,8(%rsp) > + movl %edi,%ecx > + xorl 20(%rsp),%r14d > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 44(%rsp),%r14d > + leal 1859775393(%rbp,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%r14d > + xorl 16(%rsp),%edx > + movl %edi,%eax > + movl %r14d,12(%rsp) > + movl %esi,%ecx > + xorl 24(%rsp),%edx > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 48(%rsp),%edx > + leal 1859775393(%r14,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%edx > + xorl 20(%rsp),%ebp > + movl %esi,%eax > + movl %edx,16(%rsp) > + movl %r13d,%ecx > + xorl 28(%rsp),%ebp > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 52(%rsp),%ebp > + leal 1859775393(%rdx,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%ebp > + xorl 24(%rsp),%r14d > + movl %r13d,%eax > + movl %ebp,20(%rsp) > + movl %r12d,%ecx > + xorl 32(%rsp),%r14d > + xorl %edi,%eax > + roll $5,%ecx > + xorl 56(%rsp),%r14d > + leal 1859775393(%rbp,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%r14d > + xorl 28(%rsp),%edx > + movl %r12d,%eax > + movl %r14d,24(%rsp) > + movl %r11d,%ecx > + xorl 36(%rsp),%edx > + xorl %esi,%eax > + roll $5,%ecx > + xorl 60(%rsp),%edx > + leal 1859775393(%r14,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%edx > + xorl 32(%rsp),%ebp > + movl %r11d,%eax > + movl %edx,28(%rsp) > + movl %edi,%ecx > + xorl 40(%rsp),%ebp > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 0(%rsp),%ebp > + leal 1859775393(%rdx,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%ebp > + xorl 36(%rsp),%r14d > + movl %r12d,%eax > + movl %ebp,32(%rsp) > + movl %r12d,%ebx > + xorl 44(%rsp),%r14d > + andl %r11d,%eax > + movl %esi,%ecx > + xorl 4(%rsp),%r14d > + leal -1894007588(%rbp,%r13,1),%r13d > + xorl %r11d,%ebx > + roll $5,%ecx > + addl %eax,%r13d > + roll $1,%r14d > + andl %edi,%ebx > + addl %ecx,%r13d > + roll $30,%edi > + addl %ebx,%r13d > + xorl 40(%rsp),%edx > + movl %r11d,%eax > + movl %r14d,36(%rsp) > + movl %r11d,%ebx > + xorl 48(%rsp),%edx > + andl %edi,%eax > + movl %r13d,%ecx > + xorl 8(%rsp),%edx > + leal -1894007588(%r14,%r12,1),%r12d > + xorl %edi,%ebx > + roll $5,%ecx > + addl %eax,%r12d > + roll $1,%edx > + andl %esi,%ebx > + addl %ecx,%r12d > + roll $30,%esi > + addl %ebx,%r12d > + xorl 44(%rsp),%ebp > + movl %edi,%eax > + movl %edx,40(%rsp) > + movl %edi,%ebx > + xorl 52(%rsp),%ebp > + andl %esi,%eax > + movl %r12d,%ecx > + xorl 12(%rsp),%ebp > + leal -1894007588(%rdx,%r11,1),%r11d > + xorl %esi,%ebx > + roll $5,%ecx > + addl %eax,%r11d > + roll $1,%ebp > + andl %r13d,%ebx > + addl %ecx,%r11d > + roll $30,%r13d > + addl %ebx,%r11d > + xorl 48(%rsp),%r14d > + movl %esi,%eax > + movl %ebp,44(%rsp) > + movl %esi,%ebx > + xorl 56(%rsp),%r14d > + andl %r13d,%eax > + movl %r11d,%ecx > + xorl 16(%rsp),%r14d > + leal -1894007588(%rbp,%rdi,1),%edi > + xorl %r13d,%ebx > + roll $5,%ecx > + addl %eax,%edi > + roll $1,%r14d > + andl %r12d,%ebx > + addl %ecx,%edi > + roll $30,%r12d > + addl %ebx,%edi > + xorl 52(%rsp),%edx > + movl %r13d,%eax > + movl %r14d,48(%rsp) > + movl %r13d,%ebx > + xorl 60(%rsp),%edx > + andl %r12d,%eax > + movl %edi,%ecx > + xorl 20(%rsp),%edx > + leal -1894007588(%r14,%rsi,1),%esi > + xorl %r12d,%ebx > + roll $5,%ecx > + addl %eax,%esi > + roll $1,%edx > + andl %r11d,%ebx > + addl %ecx,%esi > + roll $30,%r11d > + addl %ebx,%esi > + xorl 56(%rsp),%ebp > + movl %r12d,%eax > + movl %edx,52(%rsp) > + movl %r12d,%ebx > + xorl 0(%rsp),%ebp > + andl %r11d,%eax > + movl %esi,%ecx > + xorl 24(%rsp),%ebp > + leal -1894007588(%rdx,%r13,1),%r13d > + xorl %r11d,%ebx > + roll $5,%ecx > + addl %eax,%r13d > + roll $1,%ebp > + andl %edi,%ebx > + addl %ecx,%r13d > + roll $30,%edi > + addl %ebx,%r13d > + xorl 60(%rsp),%r14d > + movl %r11d,%eax > + movl %ebp,56(%rsp) > + movl %r11d,%ebx > + xorl 4(%rsp),%r14d > + andl %edi,%eax > + movl %r13d,%ecx > + xorl 28(%rsp),%r14d > + leal -1894007588(%rbp,%r12,1),%r12d > + xorl %edi,%ebx > + roll $5,%ecx > + addl %eax,%r12d > + roll $1,%r14d > + andl %esi,%ebx > + addl %ecx,%r12d > + roll $30,%esi > + addl %ebx,%r12d > + xorl 0(%rsp),%edx > + movl %edi,%eax > + movl %r14d,60(%rsp) > + movl %edi,%ebx > + xorl 8(%rsp),%edx > + andl %esi,%eax > + movl %r12d,%ecx > + xorl 32(%rsp),%edx > + leal -1894007588(%r14,%r11,1),%r11d > + xorl %esi,%ebx > + roll $5,%ecx > + addl %eax,%r11d > + roll $1,%edx > + andl %r13d,%ebx > + addl %ecx,%r11d > + roll $30,%r13d > + addl %ebx,%r11d > + xorl 4(%rsp),%ebp > + movl %esi,%eax > + movl %edx,0(%rsp) > + movl %esi,%ebx > + xorl 12(%rsp),%ebp > + andl %r13d,%eax > + movl %r11d,%ecx > + xorl 36(%rsp),%ebp > + leal -1894007588(%rdx,%rdi,1),%edi > + xorl %r13d,%ebx > + roll $5,%ecx > + addl %eax,%edi > + roll $1,%ebp > + andl %r12d,%ebx > + addl %ecx,%edi > + roll $30,%r12d > + addl %ebx,%edi > + xorl 8(%rsp),%r14d > + movl %r13d,%eax > + movl %ebp,4(%rsp) > + movl %r13d,%ebx > + xorl 16(%rsp),%r14d > + andl %r12d,%eax > + movl %edi,%ecx > + xorl 40(%rsp),%r14d > + leal -1894007588(%rbp,%rsi,1),%esi > + xorl %r12d,%ebx > + roll $5,%ecx > + addl %eax,%esi > + roll $1,%r14d > + andl %r11d,%ebx > + addl %ecx,%esi > + roll $30,%r11d > + addl %ebx,%esi > + xorl 12(%rsp),%edx > + movl %r12d,%eax > + movl %r14d,8(%rsp) > + movl %r12d,%ebx > + xorl 20(%rsp),%edx > + andl %r11d,%eax > + movl %esi,%ecx > + xorl 44(%rsp),%edx > + leal -1894007588(%r14,%r13,1),%r13d > + xorl %r11d,%ebx > + roll $5,%ecx > + addl %eax,%r13d > + roll $1,%edx > + andl %edi,%ebx > + addl %ecx,%r13d > + roll $30,%edi > + addl %ebx,%r13d > + xorl 16(%rsp),%ebp > + movl %r11d,%eax > + movl %edx,12(%rsp) > + movl %r11d,%ebx > + xorl 24(%rsp),%ebp > + andl %edi,%eax > + movl %r13d,%ecx > + xorl 48(%rsp),%ebp > + leal -1894007588(%rdx,%r12,1),%r12d > + xorl %edi,%ebx > + roll $5,%ecx > + addl %eax,%r12d > + roll $1,%ebp > + andl %esi,%ebx > + addl %ecx,%r12d > + roll $30,%esi > + addl %ebx,%r12d > + xorl 20(%rsp),%r14d > + movl %edi,%eax > + movl %ebp,16(%rsp) > + movl %edi,%ebx > + xorl 28(%rsp),%r14d > + andl %esi,%eax > + movl %r12d,%ecx > + xorl 52(%rsp),%r14d > + leal -1894007588(%rbp,%r11,1),%r11d > + xorl %esi,%ebx > + roll $5,%ecx > + addl %eax,%r11d > + roll $1,%r14d > + andl %r13d,%ebx > + addl %ecx,%r11d > + roll $30,%r13d > + addl %ebx,%r11d > + xorl 24(%rsp),%edx > + movl %esi,%eax > + movl %r14d,20(%rsp) > + movl %esi,%ebx > + xorl 32(%rsp),%edx > + andl %r13d,%eax > + movl %r11d,%ecx > + xorl 56(%rsp),%edx > + leal -1894007588(%r14,%rdi,1),%edi > + xorl %r13d,%ebx > + roll $5,%ecx > + addl %eax,%edi > + roll $1,%edx > + andl %r12d,%ebx > + addl %ecx,%edi > + roll $30,%r12d > + addl %ebx,%edi > + xorl 28(%rsp),%ebp > + movl %r13d,%eax > + movl %edx,24(%rsp) > + movl %r13d,%ebx > + xorl 36(%rsp),%ebp > + andl %r12d,%eax > + movl %edi,%ecx > + xorl 60(%rsp),%ebp > + leal -1894007588(%rdx,%rsi,1),%esi > + xorl %r12d,%ebx > + roll $5,%ecx > + addl %eax,%esi > + roll $1,%ebp > + andl %r11d,%ebx > + addl %ecx,%esi > + roll $30,%r11d > + addl %ebx,%esi > + xorl 32(%rsp),%r14d > + movl %r12d,%eax > + movl %ebp,28(%rsp) > + movl %r12d,%ebx > + xorl 40(%rsp),%r14d > + andl %r11d,%eax > + movl %esi,%ecx > + xorl 0(%rsp),%r14d > + leal -1894007588(%rbp,%r13,1),%r13d > + xorl %r11d,%ebx > + roll $5,%ecx > + addl %eax,%r13d > + roll $1,%r14d > + andl %edi,%ebx > + addl %ecx,%r13d > + roll $30,%edi > + addl %ebx,%r13d > + xorl 36(%rsp),%edx > + movl %r11d,%eax > + movl %r14d,32(%rsp) > + movl %r11d,%ebx > + xorl 44(%rsp),%edx > + andl %edi,%eax > + movl %r13d,%ecx > + xorl 4(%rsp),%edx > + leal -1894007588(%r14,%r12,1),%r12d > + xorl %edi,%ebx > + roll $5,%ecx > + addl %eax,%r12d > + roll $1,%edx > + andl %esi,%ebx > + addl %ecx,%r12d > + roll $30,%esi > + addl %ebx,%r12d > + xorl 40(%rsp),%ebp > + movl %edi,%eax > + movl %edx,36(%rsp) > + movl %edi,%ebx > + xorl 48(%rsp),%ebp > + andl %esi,%eax > + movl %r12d,%ecx > + xorl 8(%rsp),%ebp > + leal -1894007588(%rdx,%r11,1),%r11d > + xorl %esi,%ebx > + roll $5,%ecx > + addl %eax,%r11d > + roll $1,%ebp > + andl %r13d,%ebx > + addl %ecx,%r11d > + roll $30,%r13d > + addl %ebx,%r11d > + xorl 44(%rsp),%r14d > + movl %esi,%eax > + movl %ebp,40(%rsp) > + movl %esi,%ebx > + xorl 52(%rsp),%r14d > + andl %r13d,%eax > + movl %r11d,%ecx > + xorl 12(%rsp),%r14d > + leal -1894007588(%rbp,%rdi,1),%edi > + xorl %r13d,%ebx > + roll $5,%ecx > + addl %eax,%edi > + roll $1,%r14d > + andl %r12d,%ebx > + addl %ecx,%edi > + roll $30,%r12d > + addl %ebx,%edi > + xorl 48(%rsp),%edx > + movl %r13d,%eax > + movl %r14d,44(%rsp) > + movl %r13d,%ebx > + xorl 56(%rsp),%edx > + andl %r12d,%eax > + movl %edi,%ecx > + xorl 16(%rsp),%edx > + leal -1894007588(%r14,%rsi,1),%esi > + xorl %r12d,%ebx > + roll $5,%ecx > + addl %eax,%esi > + roll $1,%edx > + andl %r11d,%ebx > + addl %ecx,%esi > + roll $30,%r11d > + addl %ebx,%esi > + xorl 52(%rsp),%ebp > + movl %edi,%eax > + movl %edx,48(%rsp) > + movl %esi,%ecx > + xorl 60(%rsp),%ebp > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 20(%rsp),%ebp > + leal -899497514(%rdx,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%ebp > + xorl 56(%rsp),%r14d > + movl %esi,%eax > + movl %ebp,52(%rsp) > + movl %r13d,%ecx > + xorl 0(%rsp),%r14d > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 24(%rsp),%r14d > + leal -899497514(%rbp,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%r14d > + xorl 60(%rsp),%edx > + movl %r13d,%eax > + movl %r14d,56(%rsp) > + movl %r12d,%ecx > + xorl 4(%rsp),%edx > + xorl %edi,%eax > + roll $5,%ecx > + xorl 28(%rsp),%edx > + leal -899497514(%r14,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%edx > + xorl 0(%rsp),%ebp > + movl %r12d,%eax > + movl %edx,60(%rsp) > + movl %r11d,%ecx > + xorl 8(%rsp),%ebp > + xorl %esi,%eax > + roll $5,%ecx > + xorl 32(%rsp),%ebp > + leal -899497514(%rdx,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%ebp > + xorl 4(%rsp),%r14d > + movl %r11d,%eax > + movl %ebp,0(%rsp) > + movl %edi,%ecx > + xorl 12(%rsp),%r14d > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 36(%rsp),%r14d > + leal -899497514(%rbp,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%r14d > + xorl 8(%rsp),%edx > + movl %edi,%eax > + movl %r14d,4(%rsp) > + movl %esi,%ecx > + xorl 16(%rsp),%edx > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 40(%rsp),%edx > + leal -899497514(%r14,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%edx > + xorl 12(%rsp),%ebp > + movl %esi,%eax > + movl %edx,8(%rsp) > + movl %r13d,%ecx > + xorl 20(%rsp),%ebp > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 44(%rsp),%ebp > + leal -899497514(%rdx,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%ebp > + xorl 16(%rsp),%r14d > + movl %r13d,%eax > + movl %ebp,12(%rsp) > + movl %r12d,%ecx > + xorl 24(%rsp),%r14d > + xorl %edi,%eax > + roll $5,%ecx > + xorl 48(%rsp),%r14d > + leal -899497514(%rbp,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%r14d > + xorl 20(%rsp),%edx > + movl %r12d,%eax > + movl %r14d,16(%rsp) > + movl %r11d,%ecx > + xorl 28(%rsp),%edx > + xorl %esi,%eax > + roll $5,%ecx > + xorl 52(%rsp),%edx > + leal -899497514(%r14,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%edx > + xorl 24(%rsp),%ebp > + movl %r11d,%eax > + movl %edx,20(%rsp) > + movl %edi,%ecx > + xorl 32(%rsp),%ebp > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 56(%rsp),%ebp > + leal -899497514(%rdx,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%ebp > + xorl 28(%rsp),%r14d > + movl %edi,%eax > + movl %ebp,24(%rsp) > + movl %esi,%ecx > + xorl 36(%rsp),%r14d > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 60(%rsp),%r14d > + leal -899497514(%rbp,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%r14d > + xorl 32(%rsp),%edx > + movl %esi,%eax > + movl %r14d,28(%rsp) > + movl %r13d,%ecx > + xorl 40(%rsp),%edx > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 0(%rsp),%edx > + leal -899497514(%r14,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%edx > + xorl 36(%rsp),%ebp > + movl %r13d,%eax > + > + movl %r12d,%ecx > + xorl 44(%rsp),%ebp > + xorl %edi,%eax > + roll $5,%ecx > + xorl 4(%rsp),%ebp > + leal -899497514(%rdx,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%ebp > + xorl 40(%rsp),%r14d > + movl %r12d,%eax > + > + movl %r11d,%ecx > + xorl 48(%rsp),%r14d > + xorl %esi,%eax > + roll $5,%ecx > + xorl 8(%rsp),%r14d > + leal -899497514(%rbp,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%r14d > + xorl 44(%rsp),%edx > + movl %r11d,%eax > + > + movl %edi,%ecx > + xorl 52(%rsp),%edx > + xorl %r13d,%eax > + roll $5,%ecx > + xorl 12(%rsp),%edx > + leal -899497514(%r14,%rsi,1),%esi > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + roll $1,%edx > + xorl 48(%rsp),%ebp > + movl %edi,%eax > + > + movl %esi,%ecx > + xorl 56(%rsp),%ebp > + xorl %r12d,%eax > + roll $5,%ecx > + xorl 16(%rsp),%ebp > + leal -899497514(%rdx,%r13,1),%r13d > + xorl %r11d,%eax > + addl %ecx,%r13d > + roll $30,%edi > + addl %eax,%r13d > + roll $1,%ebp > + xorl 52(%rsp),%r14d > + movl %esi,%eax > + > + movl %r13d,%ecx > + xorl 60(%rsp),%r14d > + xorl %r11d,%eax > + roll $5,%ecx > + xorl 20(%rsp),%r14d > + leal -899497514(%rbp,%r12,1),%r12d > + xorl %edi,%eax > + addl %ecx,%r12d > + roll $30,%esi > + addl %eax,%r12d > + roll $1,%r14d > + xorl 56(%rsp),%edx > + movl %r13d,%eax > + > + movl %r12d,%ecx > + xorl 0(%rsp),%edx > + xorl %edi,%eax > + roll $5,%ecx > + xorl 24(%rsp),%edx > + leal -899497514(%r14,%r11,1),%r11d > + xorl %esi,%eax > + addl %ecx,%r11d > + roll $30,%r13d > + addl %eax,%r11d > + roll $1,%edx > + xorl 60(%rsp),%ebp > + movl %r12d,%eax > + > + movl %r11d,%ecx > + xorl 4(%rsp),%ebp > + xorl %esi,%eax > + roll $5,%ecx > + xorl 28(%rsp),%ebp > + leal -899497514(%rdx,%rdi,1),%edi > + xorl %r13d,%eax > + addl %ecx,%edi > + roll $30,%r12d > + addl %eax,%edi > + roll $1,%ebp > + movl %r11d,%eax > + movl %edi,%ecx > + xorl %r13d,%eax > + leal -899497514(%rbp,%rsi,1),%esi > + roll $5,%ecx > + xorl %r12d,%eax > + addl %ecx,%esi > + roll $30,%r11d > + addl %eax,%esi > + addl 0(%r8),%esi > + addl 4(%r8),%edi > + addl 8(%r8),%r11d > + addl 12(%r8),%r12d > + addl 16(%r8),%r13d > + movl %esi,0(%r8) > + movl %edi,4(%r8) > + movl %r11d,8(%r8) > + movl %r12d,12(%r8) > + movl %r13d,16(%r8) > + > + subq $1,%r10 > + leaq 64(%r9),%r9 > + jnz .Lloop > + > + movq 64(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -40(%rsi),%r14 > +.cfi_restore %r14 > + movq -32(%rsi),%r13 > +.cfi_restore %r13 > + movq -24(%rsi),%r12 > +.cfi_restore %r12 > + movq -16(%rsi),%rbp > +.cfi_restore %rbp > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq (%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha1_block_data_order,.-sha1_block_data_order > +.type sha1_block_data_order_shaext,@function > +.align 32 > +sha1_block_data_order_shaext: > +_shaext_shortcut: > +.cfi_startproc > + movdqu (%rdi),%xmm0 > + movd 16(%rdi),%xmm1 > + movdqa K_XX_XX+160(%rip),%xmm3 > + > + movdqu (%rsi),%xmm4 > + pshufd $27,%xmm0,%xmm0 > + movdqu 16(%rsi),%xmm5 > + pshufd $27,%xmm1,%xmm1 > + movdqu 32(%rsi),%xmm6 > +.byte 102,15,56,0,227 > + movdqu 48(%rsi),%xmm7 > +.byte 102,15,56,0,235 > +.byte 102,15,56,0,243 > + movdqa %xmm1,%xmm9 > +.byte 102,15,56,0,251 > + jmp .Loop_shaext > + > +.align 16 > +.Loop_shaext: > + decq %rdx > + leaq 64(%rsi),%r8 > + paddd %xmm4,%xmm1 > + cmovneq %r8,%rsi > + movdqa %xmm0,%xmm8 > +.byte 15,56,201,229 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,0 > +.byte 15,56,200,213 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > +.byte 15,56,202,231 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,0 > +.byte 15,56,200,206 > + pxor %xmm7,%xmm5 > +.byte 15,56,202,236 > +.byte 15,56,201,247 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,0 > +.byte 15,56,200,215 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > +.byte 15,56,202,245 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,0 > +.byte 15,56,200,204 > + pxor %xmm5,%xmm7 > +.byte 15,56,202,254 > +.byte 15,56,201,229 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,0 > +.byte 15,56,200,213 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > +.byte 15,56,202,231 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,1 > +.byte 15,56,200,206 > + pxor %xmm7,%xmm5 > +.byte 15,56,202,236 > +.byte 15,56,201,247 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,1 > +.byte 15,56,200,215 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > +.byte 15,56,202,245 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,1 > +.byte 15,56,200,204 > + pxor %xmm5,%xmm7 > +.byte 15,56,202,254 > +.byte 15,56,201,229 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,1 > +.byte 15,56,200,213 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > +.byte 15,56,202,231 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,1 > +.byte 15,56,200,206 > + pxor %xmm7,%xmm5 > +.byte 15,56,202,236 > +.byte 15,56,201,247 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,2 > +.byte 15,56,200,215 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > +.byte 15,56,202,245 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,2 > +.byte 15,56,200,204 > + pxor %xmm5,%xmm7 > +.byte 15,56,202,254 > +.byte 15,56,201,229 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,2 > +.byte 15,56,200,213 > + pxor %xmm6,%xmm4 > +.byte 15,56,201,238 > +.byte 15,56,202,231 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,2 > +.byte 15,56,200,206 > + pxor %xmm7,%xmm5 > +.byte 15,56,202,236 > +.byte 15,56,201,247 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,2 > +.byte 15,56,200,215 > + pxor %xmm4,%xmm6 > +.byte 15,56,201,252 > +.byte 15,56,202,245 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,3 > +.byte 15,56,200,204 > + pxor %xmm5,%xmm7 > +.byte 15,56,202,254 > + movdqu (%rsi),%xmm4 > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,3 > +.byte 15,56,200,213 > + movdqu 16(%rsi),%xmm5 > +.byte 102,15,56,0,227 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,3 > +.byte 15,56,200,206 > + movdqu 32(%rsi),%xmm6 > +.byte 102,15,56,0,235 > + > + movdqa %xmm0,%xmm2 > +.byte 15,58,204,193,3 > +.byte 15,56,200,215 > + movdqu 48(%rsi),%xmm7 > +.byte 102,15,56,0,243 > + > + movdqa %xmm0,%xmm1 > +.byte 15,58,204,194,3 > +.byte 65,15,56,200,201 > +.byte 102,15,56,0,251 > + > + paddd %xmm8,%xmm0 > + movdqa %xmm1,%xmm9 > + > + jnz .Loop_shaext > + > + pshufd $27,%xmm0,%xmm0 > + pshufd $27,%xmm1,%xmm1 > + movdqu %xmm0,(%rdi) > + movd %xmm1,16(%rdi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext > +.type sha1_block_data_order_ssse3,@function > +.align 16 > +sha1_block_data_order_ssse3: > +_ssse3_shortcut: > +.cfi_startproc > + movq %rsp,%r11 > +.cfi_def_cfa_register %r11 > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + leaq -64(%rsp),%rsp > + andq $-64,%rsp > + movq %rdi,%r8 > + movq %rsi,%r9 > + movq %rdx,%r10 > + > + shlq $6,%r10 > + addq %r9,%r10 > + leaq K_XX_XX+64(%rip),%r14 > + > + movl 0(%r8),%eax > + movl 4(%r8),%ebx > + movl 8(%r8),%ecx > + movl 12(%r8),%edx > + movl %ebx,%esi > + movl 16(%r8),%ebp > + movl %ecx,%edi > + xorl %edx,%edi > + andl %edi,%esi > + > + movdqa 64(%r14),%xmm6 > + movdqa -64(%r14),%xmm9 > + movdqu 0(%r9),%xmm0 > + movdqu 16(%r9),%xmm1 > + movdqu 32(%r9),%xmm2 > + movdqu 48(%r9),%xmm3 > +.byte 102,15,56,0,198 > +.byte 102,15,56,0,206 > +.byte 102,15,56,0,214 > + addq $64,%r9 > + paddd %xmm9,%xmm0 > +.byte 102,15,56,0,222 > + paddd %xmm9,%xmm1 > + paddd %xmm9,%xmm2 > + movdqa %xmm0,0(%rsp) > + psubd %xmm9,%xmm0 > + movdqa %xmm1,16(%rsp) > + psubd %xmm9,%xmm1 > + movdqa %xmm2,32(%rsp) > + psubd %xmm9,%xmm2 > + jmp .Loop_ssse3 > +.align 16 > +.Loop_ssse3: > + rorl $2,%ebx > + pshufd $238,%xmm0,%xmm4 > + xorl %edx,%esi > + movdqa %xmm3,%xmm8 > + paddd %xmm3,%xmm9 > + movl %eax,%edi > + addl 0(%rsp),%ebp > + punpcklqdq %xmm1,%xmm4 > + xorl %ecx,%ebx > + roll $5,%eax > + addl %esi,%ebp > + psrldq $4,%xmm8 > + andl %ebx,%edi > + xorl %ecx,%ebx > + pxor %xmm0,%xmm4 > + addl %eax,%ebp > + rorl $7,%eax > + pxor %xmm2,%xmm8 > + xorl %ecx,%edi > + movl %ebp,%esi > + addl 4(%rsp),%edx > + pxor %xmm8,%xmm4 > + xorl %ebx,%eax > + roll $5,%ebp > + movdqa %xmm9,48(%rsp) > + addl %edi,%edx > + andl %eax,%esi > + movdqa %xmm4,%xmm10 > + xorl %ebx,%eax > + addl %ebp,%edx > + rorl $7,%ebp > + movdqa %xmm4,%xmm8 > + xorl %ebx,%esi > + pslldq $12,%xmm10 > + paddd %xmm4,%xmm4 > + movl %edx,%edi > + addl 8(%rsp),%ecx > + psrld $31,%xmm8 > + xorl %eax,%ebp > + roll $5,%edx > + addl %esi,%ecx > + movdqa %xmm10,%xmm9 > + andl %ebp,%edi > + xorl %eax,%ebp > + psrld $30,%xmm10 > + addl %edx,%ecx > + rorl $7,%edx > + por %xmm8,%xmm4 > + xorl %eax,%edi > + movl %ecx,%esi > + addl 12(%rsp),%ebx > + pslld $2,%xmm9 > + pxor %xmm10,%xmm4 > + xorl %ebp,%edx > + movdqa -64(%r14),%xmm10 > + roll $5,%ecx > + addl %edi,%ebx > + andl %edx,%esi > + pxor %xmm9,%xmm4 > + xorl %ebp,%edx > + addl %ecx,%ebx > + rorl $7,%ecx > + pshufd $238,%xmm1,%xmm5 > + xorl %ebp,%esi > + movdqa %xmm4,%xmm9 > + paddd %xmm4,%xmm10 > + movl %ebx,%edi > + addl 16(%rsp),%eax > + punpcklqdq %xmm2,%xmm5 > + xorl %edx,%ecx > + roll $5,%ebx > + addl %esi,%eax > + psrldq $4,%xmm9 > + andl %ecx,%edi > + xorl %edx,%ecx > + pxor %xmm1,%xmm5 > + addl %ebx,%eax > + rorl $7,%ebx > + pxor %xmm3,%xmm9 > + xorl %edx,%edi > + movl %eax,%esi > + addl 20(%rsp),%ebp > + pxor %xmm9,%xmm5 > + xorl %ecx,%ebx > + roll $5,%eax > + movdqa %xmm10,0(%rsp) > + addl %edi,%ebp > + andl %ebx,%esi > + movdqa %xmm5,%xmm8 > + xorl %ecx,%ebx > + addl %eax,%ebp > + rorl $7,%eax > + movdqa %xmm5,%xmm9 > + xorl %ecx,%esi > + pslldq $12,%xmm8 > + paddd %xmm5,%xmm5 > + movl %ebp,%edi > + addl 24(%rsp),%edx > + psrld $31,%xmm9 > + xorl %ebx,%eax > + roll $5,%ebp > + addl %esi,%edx > + movdqa %xmm8,%xmm10 > + andl %eax,%edi > + xorl %ebx,%eax > + psrld $30,%xmm8 > + addl %ebp,%edx > + rorl $7,%ebp > + por %xmm9,%xmm5 > + xorl %ebx,%edi > + movl %edx,%esi > + addl 28(%rsp),%ecx > + pslld $2,%xmm10 > + pxor %xmm8,%xmm5 > + xorl %eax,%ebp > + movdqa -32(%r14),%xmm8 > + roll $5,%edx > + addl %edi,%ecx > + andl %ebp,%esi > + pxor %xmm10,%xmm5 > + xorl %eax,%ebp > + addl %edx,%ecx > + rorl $7,%edx > + pshufd $238,%xmm2,%xmm6 > + xorl %eax,%esi > + movdqa %xmm5,%xmm10 > + paddd %xmm5,%xmm8 > + movl %ecx,%edi > + addl 32(%rsp),%ebx > + punpcklqdq %xmm3,%xmm6 > + xorl %ebp,%edx > + roll $5,%ecx > + addl %esi,%ebx > + psrldq $4,%xmm10 > + andl %edx,%edi > + xorl %ebp,%edx > + pxor %xmm2,%xmm6 > + addl %ecx,%ebx > + rorl $7,%ecx > + pxor %xmm4,%xmm10 > + xorl %ebp,%edi > + movl %ebx,%esi > + addl 36(%rsp),%eax > + pxor %xmm10,%xmm6 > + xorl %edx,%ecx > + roll $5,%ebx > + movdqa %xmm8,16(%rsp) > + addl %edi,%eax > + andl %ecx,%esi > + movdqa %xmm6,%xmm9 > + xorl %edx,%ecx > + addl %ebx,%eax > + rorl $7,%ebx > + movdqa %xmm6,%xmm10 > + xorl %edx,%esi > + pslldq $12,%xmm9 > + paddd %xmm6,%xmm6 > + movl %eax,%edi > + addl 40(%rsp),%ebp > + psrld $31,%xmm10 > + xorl %ecx,%ebx > + roll $5,%eax > + addl %esi,%ebp > + movdqa %xmm9,%xmm8 > + andl %ebx,%edi > + xorl %ecx,%ebx > + psrld $30,%xmm9 > + addl %eax,%ebp > + rorl $7,%eax > + por %xmm10,%xmm6 > + xorl %ecx,%edi > + movl %ebp,%esi > + addl 44(%rsp),%edx > + pslld $2,%xmm8 > + pxor %xmm9,%xmm6 > + xorl %ebx,%eax > + movdqa -32(%r14),%xmm9 > + roll $5,%ebp > + addl %edi,%edx > + andl %eax,%esi > + pxor %xmm8,%xmm6 > + xorl %ebx,%eax > + addl %ebp,%edx > + rorl $7,%ebp > + pshufd $238,%xmm3,%xmm7 > + xorl %ebx,%esi > + movdqa %xmm6,%xmm8 > + paddd %xmm6,%xmm9 > + movl %edx,%edi > + addl 48(%rsp),%ecx > + punpcklqdq %xmm4,%xmm7 > + xorl %eax,%ebp > + roll $5,%edx > + addl %esi,%ecx > + psrldq $4,%xmm8 > + andl %ebp,%edi > + xorl %eax,%ebp > + pxor %xmm3,%xmm7 > + addl %edx,%ecx > + rorl $7,%edx > + pxor %xmm5,%xmm8 > + xorl %eax,%edi > + movl %ecx,%esi > + addl 52(%rsp),%ebx > + pxor %xmm8,%xmm7 > + xorl %ebp,%edx > + roll $5,%ecx > + movdqa %xmm9,32(%rsp) > + addl %edi,%ebx > + andl %edx,%esi > + movdqa %xmm7,%xmm10 > + xorl %ebp,%edx > + addl %ecx,%ebx > + rorl $7,%ecx > + movdqa %xmm7,%xmm8 > + xorl %ebp,%esi > + pslldq $12,%xmm10 > + paddd %xmm7,%xmm7 > + movl %ebx,%edi > + addl 56(%rsp),%eax > + psrld $31,%xmm8 > + xorl %edx,%ecx > + roll $5,%ebx > + addl %esi,%eax > + movdqa %xmm10,%xmm9 > + andl %ecx,%edi > + xorl %edx,%ecx > + psrld $30,%xmm10 > + addl %ebx,%eax > + rorl $7,%ebx > + por %xmm8,%xmm7 > + xorl %edx,%edi > + movl %eax,%esi > + addl 60(%rsp),%ebp > + pslld $2,%xmm9 > + pxor %xmm10,%xmm7 > + xorl %ecx,%ebx > + movdqa -32(%r14),%xmm10 > + roll $5,%eax > + addl %edi,%ebp > + andl %ebx,%esi > + pxor %xmm9,%xmm7 > + pshufd $238,%xmm6,%xmm9 > + xorl %ecx,%ebx > + addl %eax,%ebp > + rorl $7,%eax > + pxor %xmm4,%xmm0 > + xorl %ecx,%esi > + movl %ebp,%edi > + addl 0(%rsp),%edx > + punpcklqdq %xmm7,%xmm9 > + xorl %ebx,%eax > + roll $5,%ebp > + pxor %xmm1,%xmm0 > + addl %esi,%edx > + andl %eax,%edi > + movdqa %xmm10,%xmm8 > + xorl %ebx,%eax > + paddd %xmm7,%xmm10 > + addl %ebp,%edx > + pxor %xmm9,%xmm0 > + rorl $7,%ebp > + xorl %ebx,%edi > + movl %edx,%esi > + addl 4(%rsp),%ecx > + movdqa %xmm0,%xmm9 > + xorl %eax,%ebp > + roll $5,%edx > + movdqa %xmm10,48(%rsp) > + addl %edi,%ecx > + andl %ebp,%esi > + xorl %eax,%ebp > + pslld $2,%xmm0 > + addl %edx,%ecx > + rorl $7,%edx > + psrld $30,%xmm9 > + xorl %eax,%esi > + movl %ecx,%edi > + addl 8(%rsp),%ebx > + por %xmm9,%xmm0 > + xorl %ebp,%edx > + roll $5,%ecx > + pshufd $238,%xmm7,%xmm10 > + addl %esi,%ebx > + andl %edx,%edi > + xorl %ebp,%edx > + addl %ecx,%ebx > + addl 12(%rsp),%eax > + xorl %ebp,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + addl %ebx,%eax > + pxor %xmm5,%xmm1 > + addl 16(%rsp),%ebp > + xorl %ecx,%esi > + punpcklqdq %xmm0,%xmm10 > + movl %eax,%edi > + roll $5,%eax > + pxor %xmm2,%xmm1 > + addl %esi,%ebp > + xorl %ecx,%edi > + movdqa %xmm8,%xmm9 > + rorl $7,%ebx > + paddd %xmm0,%xmm8 > + addl %eax,%ebp > + pxor %xmm10,%xmm1 > + addl 20(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + movdqa %xmm1,%xmm10 > + addl %edi,%edx > + xorl %ebx,%esi > + movdqa %xmm8,0(%rsp) > + rorl $7,%eax > + addl %ebp,%edx > + addl 24(%rsp),%ecx > + pslld $2,%xmm1 > + xorl %eax,%esi > + movl %edx,%edi > + psrld $30,%xmm10 > + roll $5,%edx > + addl %esi,%ecx > + xorl %eax,%edi > + rorl $7,%ebp > + por %xmm10,%xmm1 > + addl %edx,%ecx > + addl 28(%rsp),%ebx > + pshufd $238,%xmm0,%xmm8 > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + pxor %xmm6,%xmm2 > + addl 32(%rsp),%eax > + xorl %edx,%esi > + punpcklqdq %xmm1,%xmm8 > + movl %ebx,%edi > + roll $5,%ebx > + pxor %xmm3,%xmm2 > + addl %esi,%eax > + xorl %edx,%edi > + movdqa 0(%r14),%xmm10 > + rorl $7,%ecx > + paddd %xmm1,%xmm9 > + addl %ebx,%eax > + pxor %xmm8,%xmm2 > + addl 36(%rsp),%ebp > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + movdqa %xmm2,%xmm8 > + addl %edi,%ebp > + xorl %ecx,%esi > + movdqa %xmm9,16(%rsp) > + rorl $7,%ebx > + addl %eax,%ebp > + addl 40(%rsp),%edx > + pslld $2,%xmm2 > + xorl %ebx,%esi > + movl %ebp,%edi > + psrld $30,%xmm8 > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + por %xmm8,%xmm2 > + addl %ebp,%edx > + addl 44(%rsp),%ecx > + pshufd $238,%xmm1,%xmm9 > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + pxor %xmm7,%xmm3 > + addl 48(%rsp),%ebx > + xorl %ebp,%esi > + punpcklqdq %xmm2,%xmm9 > + movl %ecx,%edi > + roll $5,%ecx > + pxor %xmm4,%xmm3 > + addl %esi,%ebx > + xorl %ebp,%edi > + movdqa %xmm10,%xmm8 > + rorl $7,%edx > + paddd %xmm2,%xmm10 > + addl %ecx,%ebx > + pxor %xmm9,%xmm3 > + addl 52(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + movdqa %xmm3,%xmm9 > + addl %edi,%eax > + xorl %edx,%esi > + movdqa %xmm10,32(%rsp) > + rorl $7,%ecx > + addl %ebx,%eax > + addl 56(%rsp),%ebp > + pslld $2,%xmm3 > + xorl %ecx,%esi > + movl %eax,%edi > + psrld $30,%xmm9 > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + por %xmm9,%xmm3 > + addl %eax,%ebp > + addl 60(%rsp),%edx > + pshufd $238,%xmm2,%xmm10 > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + pxor %xmm0,%xmm4 > + addl 0(%rsp),%ecx > + xorl %eax,%esi > + punpcklqdq %xmm3,%xmm10 > + movl %edx,%edi > + roll $5,%edx > + pxor %xmm5,%xmm4 > + addl %esi,%ecx > + xorl %eax,%edi > + movdqa %xmm8,%xmm9 > + rorl $7,%ebp > + paddd %xmm3,%xmm8 > + addl %edx,%ecx > + pxor %xmm10,%xmm4 > + addl 4(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + movdqa %xmm4,%xmm10 > + addl %edi,%ebx > + xorl %ebp,%esi > + movdqa %xmm8,48(%rsp) > + rorl $7,%edx > + addl %ecx,%ebx > + addl 8(%rsp),%eax > + pslld $2,%xmm4 > + xorl %edx,%esi > + movl %ebx,%edi > + psrld $30,%xmm10 > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + por %xmm10,%xmm4 > + addl %ebx,%eax > + addl 12(%rsp),%ebp > + pshufd $238,%xmm3,%xmm8 > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + pxor %xmm1,%xmm5 > + addl 16(%rsp),%edx > + xorl %ebx,%esi > + punpcklqdq %xmm4,%xmm8 > + movl %ebp,%edi > + roll $5,%ebp > + pxor %xmm6,%xmm5 > + addl %esi,%edx > + xorl %ebx,%edi > + movdqa %xmm9,%xmm10 > + rorl $7,%eax > + paddd %xmm4,%xmm9 > + addl %ebp,%edx > + pxor %xmm8,%xmm5 > + addl 20(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + movdqa %xmm5,%xmm8 > + addl %edi,%ecx > + xorl %eax,%esi > + movdqa %xmm9,0(%rsp) > + rorl $7,%ebp > + addl %edx,%ecx > + addl 24(%rsp),%ebx > + pslld $2,%xmm5 > + xorl %ebp,%esi > + movl %ecx,%edi > + psrld $30,%xmm8 > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + por %xmm8,%xmm5 > + addl %ecx,%ebx > + addl 28(%rsp),%eax > + pshufd $238,%xmm4,%xmm9 > + rorl $7,%ecx > + movl %ebx,%esi > + xorl %edx,%edi > + roll $5,%ebx > + addl %edi,%eax > + xorl %ecx,%esi > + xorl %edx,%ecx > + addl %ebx,%eax > + pxor %xmm2,%xmm6 > + addl 32(%rsp),%ebp > + andl %ecx,%esi > + xorl %edx,%ecx > + rorl $7,%ebx > + punpcklqdq %xmm5,%xmm9 > + movl %eax,%edi > + xorl %ecx,%esi > + pxor %xmm7,%xmm6 > + roll $5,%eax > + addl %esi,%ebp > + movdqa %xmm10,%xmm8 > + xorl %ebx,%edi > + paddd %xmm5,%xmm10 > + xorl %ecx,%ebx > + pxor %xmm9,%xmm6 > + addl %eax,%ebp > + addl 36(%rsp),%edx > + andl %ebx,%edi > + xorl %ecx,%ebx > + rorl $7,%eax > + movdqa %xmm6,%xmm9 > + movl %ebp,%esi > + xorl %ebx,%edi > + movdqa %xmm10,16(%rsp) > + roll $5,%ebp > + addl %edi,%edx > + xorl %eax,%esi > + pslld $2,%xmm6 > + xorl %ebx,%eax > + addl %ebp,%edx > + psrld $30,%xmm9 > + addl 40(%rsp),%ecx > + andl %eax,%esi > + xorl %ebx,%eax > + por %xmm9,%xmm6 > + rorl $7,%ebp > + movl %edx,%edi > + xorl %eax,%esi > + roll $5,%edx > + pshufd $238,%xmm5,%xmm10 > + addl %esi,%ecx > + xorl %ebp,%edi > + xorl %eax,%ebp > + addl %edx,%ecx > + addl 44(%rsp),%ebx > + andl %ebp,%edi > + xorl %eax,%ebp > + rorl $7,%edx > + movl %ecx,%esi > + xorl %ebp,%edi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %edx,%esi > + xorl %ebp,%edx > + addl %ecx,%ebx > + pxor %xmm3,%xmm7 > + addl 48(%rsp),%eax > + andl %edx,%esi > + xorl %ebp,%edx > + rorl $7,%ecx > + punpcklqdq %xmm6,%xmm10 > + movl %ebx,%edi > + xorl %edx,%esi > + pxor %xmm0,%xmm7 > + roll $5,%ebx > + addl %esi,%eax > + movdqa 32(%r14),%xmm9 > + xorl %ecx,%edi > + paddd %xmm6,%xmm8 > + xorl %edx,%ecx > + pxor %xmm10,%xmm7 > + addl %ebx,%eax > + addl 52(%rsp),%ebp > + andl %ecx,%edi > + xorl %edx,%ecx > + rorl $7,%ebx > + movdqa %xmm7,%xmm10 > + movl %eax,%esi > + xorl %ecx,%edi > + movdqa %xmm8,32(%rsp) > + roll $5,%eax > + addl %edi,%ebp > + xorl %ebx,%esi > + pslld $2,%xmm7 > + xorl %ecx,%ebx > + addl %eax,%ebp > + psrld $30,%xmm10 > + addl 56(%rsp),%edx > + andl %ebx,%esi > + xorl %ecx,%ebx > + por %xmm10,%xmm7 > + rorl $7,%eax > + movl %ebp,%edi > + xorl %ebx,%esi > + roll $5,%ebp > + pshufd $238,%xmm6,%xmm8 > + addl %esi,%edx > + xorl %eax,%edi > + xorl %ebx,%eax > + addl %ebp,%edx > + addl 60(%rsp),%ecx > + andl %eax,%edi > + xorl %ebx,%eax > + rorl $7,%ebp > + movl %edx,%esi > + xorl %eax,%edi > + roll $5,%edx > + addl %edi,%ecx > + xorl %ebp,%esi > + xorl %eax,%ebp > + addl %edx,%ecx > + pxor %xmm4,%xmm0 > + addl 0(%rsp),%ebx > + andl %ebp,%esi > + xorl %eax,%ebp > + rorl $7,%edx > + punpcklqdq %xmm7,%xmm8 > + movl %ecx,%edi > + xorl %ebp,%esi > + pxor %xmm1,%xmm0 > + roll $5,%ecx > + addl %esi,%ebx > + movdqa %xmm9,%xmm10 > + xorl %edx,%edi > + paddd %xmm7,%xmm9 > + xorl %ebp,%edx > + pxor %xmm8,%xmm0 > + addl %ecx,%ebx > + addl 4(%rsp),%eax > + andl %edx,%edi > + xorl %ebp,%edx > + rorl $7,%ecx > + movdqa %xmm0,%xmm8 > + movl %ebx,%esi > + xorl %edx,%edi > + movdqa %xmm9,48(%rsp) > + roll $5,%ebx > + addl %edi,%eax > + xorl %ecx,%esi > + pslld $2,%xmm0 > + xorl %edx,%ecx > + addl %ebx,%eax > + psrld $30,%xmm8 > + addl 8(%rsp),%ebp > + andl %ecx,%esi > + xorl %edx,%ecx > + por %xmm8,%xmm0 > + rorl $7,%ebx > + movl %eax,%edi > + xorl %ecx,%esi > + roll $5,%eax > + pshufd $238,%xmm7,%xmm9 > + addl %esi,%ebp > + xorl %ebx,%edi > + xorl %ecx,%ebx > + addl %eax,%ebp > + addl 12(%rsp),%edx > + andl %ebx,%edi > + xorl %ecx,%ebx > + rorl $7,%eax > + movl %ebp,%esi > + xorl %ebx,%edi > + roll $5,%ebp > + addl %edi,%edx > + xorl %eax,%esi > + xorl %ebx,%eax > + addl %ebp,%edx > + pxor %xmm5,%xmm1 > + addl 16(%rsp),%ecx > + andl %eax,%esi > + xorl %ebx,%eax > + rorl $7,%ebp > + punpcklqdq %xmm0,%xmm9 > + movl %edx,%edi > + xorl %eax,%esi > + pxor %xmm2,%xmm1 > + roll $5,%edx > + addl %esi,%ecx > + movdqa %xmm10,%xmm8 > + xorl %ebp,%edi > + paddd %xmm0,%xmm10 > + xorl %eax,%ebp > + pxor %xmm9,%xmm1 > + addl %edx,%ecx > + addl 20(%rsp),%ebx > + andl %ebp,%edi > + xorl %eax,%ebp > + rorl $7,%edx > + movdqa %xmm1,%xmm9 > + movl %ecx,%esi > + xorl %ebp,%edi > + movdqa %xmm10,0(%rsp) > + roll $5,%ecx > + addl %edi,%ebx > + xorl %edx,%esi > + pslld $2,%xmm1 > + xorl %ebp,%edx > + addl %ecx,%ebx > + psrld $30,%xmm9 > + addl 24(%rsp),%eax > + andl %edx,%esi > + xorl %ebp,%edx > + por %xmm9,%xmm1 > + rorl $7,%ecx > + movl %ebx,%edi > + xorl %edx,%esi > + roll $5,%ebx > + pshufd $238,%xmm0,%xmm10 > + addl %esi,%eax > + xorl %ecx,%edi > + xorl %edx,%ecx > + addl %ebx,%eax > + addl 28(%rsp),%ebp > + andl %ecx,%edi > + xorl %edx,%ecx > + rorl $7,%ebx > + movl %eax,%esi > + xorl %ecx,%edi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ebx,%esi > + xorl %ecx,%ebx > + addl %eax,%ebp > + pxor %xmm6,%xmm2 > + addl 32(%rsp),%edx > + andl %ebx,%esi > + xorl %ecx,%ebx > + rorl $7,%eax > + punpcklqdq %xmm1,%xmm10 > + movl %ebp,%edi > + xorl %ebx,%esi > + pxor %xmm3,%xmm2 > + roll $5,%ebp > + addl %esi,%edx > + movdqa %xmm8,%xmm9 > + xorl %eax,%edi > + paddd %xmm1,%xmm8 > + xorl %ebx,%eax > + pxor %xmm10,%xmm2 > + addl %ebp,%edx > + addl 36(%rsp),%ecx > + andl %eax,%edi > + xorl %ebx,%eax > + rorl $7,%ebp > + movdqa %xmm2,%xmm10 > + movl %edx,%esi > + xorl %eax,%edi > + movdqa %xmm8,16(%rsp) > + roll $5,%edx > + addl %edi,%ecx > + xorl %ebp,%esi > + pslld $2,%xmm2 > + xorl %eax,%ebp > + addl %edx,%ecx > + psrld $30,%xmm10 > + addl 40(%rsp),%ebx > + andl %ebp,%esi > + xorl %eax,%ebp > + por %xmm10,%xmm2 > + rorl $7,%edx > + movl %ecx,%edi > + xorl %ebp,%esi > + roll $5,%ecx > + pshufd $238,%xmm1,%xmm8 > + addl %esi,%ebx > + xorl %edx,%edi > + xorl %ebp,%edx > + addl %ecx,%ebx > + addl 44(%rsp),%eax > + andl %edx,%edi > + xorl %ebp,%edx > + rorl $7,%ecx > + movl %ebx,%esi > + xorl %edx,%edi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + addl %ebx,%eax > + pxor %xmm7,%xmm3 > + addl 48(%rsp),%ebp > + xorl %ecx,%esi > + punpcklqdq %xmm2,%xmm8 > + movl %eax,%edi > + roll $5,%eax > + pxor %xmm4,%xmm3 > + addl %esi,%ebp > + xorl %ecx,%edi > + movdqa %xmm9,%xmm10 > + rorl $7,%ebx > + paddd %xmm2,%xmm9 > + addl %eax,%ebp > + pxor %xmm8,%xmm3 > + addl 52(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + movdqa %xmm3,%xmm8 > + addl %edi,%edx > + xorl %ebx,%esi > + movdqa %xmm9,32(%rsp) > + rorl $7,%eax > + addl %ebp,%edx > + addl 56(%rsp),%ecx > + pslld $2,%xmm3 > + xorl %eax,%esi > + movl %edx,%edi > + psrld $30,%xmm8 > + roll $5,%edx > + addl %esi,%ecx > + xorl %eax,%edi > + rorl $7,%ebp > + por %xmm8,%xmm3 > + addl %edx,%ecx > + addl 60(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 0(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + paddd %xmm3,%xmm10 > + addl %esi,%eax > + xorl %edx,%edi > + movdqa %xmm10,48(%rsp) > + rorl $7,%ecx > + addl %ebx,%eax > + addl 4(%rsp),%ebp > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 8(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + addl %ebp,%edx > + addl 12(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + cmpq %r10,%r9 > + je .Ldone_ssse3 > + movdqa 64(%r14),%xmm6 > + movdqa -64(%r14),%xmm9 > + movdqu 0(%r9),%xmm0 > + movdqu 16(%r9),%xmm1 > + movdqu 32(%r9),%xmm2 > + movdqu 48(%r9),%xmm3 > +.byte 102,15,56,0,198 > + addq $64,%r9 > + addl 16(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > +.byte 102,15,56,0,206 > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + paddd %xmm9,%xmm0 > + addl %ecx,%ebx > + addl 20(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + movdqa %xmm0,0(%rsp) > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + psubd %xmm9,%xmm0 > + addl %ebx,%eax > + addl 24(%rsp),%ebp > + xorl %ecx,%esi > + movl %eax,%edi > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 28(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + addl 32(%rsp),%ecx > + xorl %eax,%esi > + movl %edx,%edi > +.byte 102,15,56,0,214 > + roll $5,%edx > + addl %esi,%ecx > + xorl %eax,%edi > + rorl $7,%ebp > + paddd %xmm9,%xmm1 > + addl %edx,%ecx > + addl 36(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + movdqa %xmm1,16(%rsp) > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + psubd %xmm9,%xmm1 > + addl %ecx,%ebx > + addl 40(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 44(%rsp),%ebp > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 48(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > +.byte 102,15,56,0,222 > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + paddd %xmm9,%xmm2 > + addl %ebp,%edx > + addl 52(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + movdqa %xmm2,32(%rsp) > + roll $5,%edx > + addl %edi,%ecx > + xorl %eax,%esi > + rorl $7,%ebp > + psubd %xmm9,%xmm2 > + addl %edx,%ecx > + addl 56(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 60(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + rorl $7,%ecx > + addl %ebx,%eax > + addl 0(%r8),%eax > + addl 4(%r8),%esi > + addl 8(%r8),%ecx > + addl 12(%r8),%edx > + movl %eax,0(%r8) > + addl 16(%r8),%ebp > + movl %esi,4(%r8) > + movl %esi,%ebx > + movl %ecx,8(%r8) > + movl %ecx,%edi > + movl %edx,12(%r8) > + xorl %edx,%edi > + movl %ebp,16(%r8) > + andl %edi,%esi > + jmp .Loop_ssse3 > + > +.align 16 > +.Ldone_ssse3: > + addl 16(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 20(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + xorl %edx,%esi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 24(%rsp),%ebp > + xorl %ecx,%esi > + movl %eax,%edi > + roll $5,%eax > + addl %esi,%ebp > + xorl %ecx,%edi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 28(%rsp),%edx > + xorl %ebx,%edi > + movl %ebp,%esi > + roll $5,%ebp > + addl %edi,%edx > + xorl %ebx,%esi > + rorl $7,%eax > + addl %ebp,%edx > + addl 32(%rsp),%ecx > + xorl %eax,%esi > + movl %edx,%edi > + roll $5,%edx > + addl %esi,%ecx > + xorl %eax,%edi > + rorl $7,%ebp > + addl %edx,%ecx > + addl 36(%rsp),%ebx > + xorl %ebp,%edi > + movl %ecx,%esi > + roll $5,%ecx > + addl %edi,%ebx > + xorl %ebp,%esi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 40(%rsp),%eax > + xorl %edx,%esi > + movl %ebx,%edi > + roll $5,%ebx > + addl %esi,%eax > + xorl %edx,%edi > + rorl $7,%ecx > + addl %ebx,%eax > + addl 44(%rsp),%ebp > + xorl %ecx,%edi > + movl %eax,%esi > + roll $5,%eax > + addl %edi,%ebp > + xorl %ecx,%esi > + rorl $7,%ebx > + addl %eax,%ebp > + addl 48(%rsp),%edx > + xorl %ebx,%esi > + movl %ebp,%edi > + roll $5,%ebp > + addl %esi,%edx > + xorl %ebx,%edi > + rorl $7,%eax > + addl %ebp,%edx > + addl 52(%rsp),%ecx > + xorl %eax,%edi > + movl %edx,%esi > + roll $5,%edx > + addl %edi,%ecx > + xorl %eax,%esi > + rorl $7,%ebp > + addl %edx,%ecx > + addl 56(%rsp),%ebx > + xorl %ebp,%esi > + movl %ecx,%edi > + roll $5,%ecx > + addl %esi,%ebx > + xorl %ebp,%edi > + rorl $7,%edx > + addl %ecx,%ebx > + addl 60(%rsp),%eax > + xorl %edx,%edi > + movl %ebx,%esi > + roll $5,%ebx > + addl %edi,%eax > + rorl $7,%ecx > + addl %ebx,%eax > + addl 0(%r8),%eax > + addl 4(%r8),%esi > + addl 8(%r8),%ecx > + movl %eax,0(%r8) > + addl 12(%r8),%edx > + movl %esi,4(%r8) > + addl 16(%r8),%ebp > + movl %ecx,8(%r8) > + movl %edx,12(%r8) > + movl %ebp,16(%r8) > + movq -40(%r11),%r14 > +.cfi_restore %r14 > + movq -32(%r11),%r13 > +.cfi_restore %r13 > + movq -24(%r11),%r12 > +.cfi_restore %r12 > + movq -16(%r11),%rbp > +.cfi_restore %rbp > + movq -8(%r11),%rbx > +.cfi_restore %rbx > + leaq (%r11),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue_ssse3: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3 > +.align 64 > +K_XX_XX: > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 > +.byte > 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32= , > 102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,= 98, > 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,10 > 3,62,0 > +.align 64 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb- > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb- > x86_64.S > new file mode 100644 > index 0000000000..25dee488b8 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S > @@ -0,0 +1,3286 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl > +# > +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > + > +.globl sha256_multi_block > +.type sha256_multi_block,@function > +.align 32 > +sha256_multi_block: > +.cfi_startproc > + movq OPENSSL_ia32cap_P+4(%rip),%rcx > + btq $61,%rcx > + jc _shaext_shortcut > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + subq $288,%rsp > + andq $-256,%rsp > + movq %rax,272(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 > +.Lbody: > + leaq K256+128(%rip),%rbp > + leaq 256(%rsp),%rbx > + leaq 128(%rdi),%rdi > + > +.Loop_grande: > + movl %edx,280(%rsp) > + xorl %edx,%edx > + movq 0(%rsi),%r8 > + movl 8(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,0(%rbx) > + cmovleq %rbp,%r8 > + movq 16(%rsi),%r9 > + movl 24(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,4(%rbx) > + cmovleq %rbp,%r9 > + movq 32(%rsi),%r10 > + movl 40(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,8(%rbx) > + cmovleq %rbp,%r10 > + movq 48(%rsi),%r11 > + movl 56(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,12(%rbx) > + cmovleq %rbp,%r11 > + testl %edx,%edx > + jz .Ldone > + > + movdqu 0-128(%rdi),%xmm8 > + leaq 128(%rsp),%rax > + movdqu 32-128(%rdi),%xmm9 > + movdqu 64-128(%rdi),%xmm10 > + movdqu 96-128(%rdi),%xmm11 > + movdqu 128-128(%rdi),%xmm12 > + movdqu 160-128(%rdi),%xmm13 > + movdqu 192-128(%rdi),%xmm14 > + movdqu 224-128(%rdi),%xmm15 > + movdqu .Lpbswap(%rip),%xmm6 > + jmp .Loop > + > +.align 32 > +.Loop: > + movdqa %xmm10,%xmm4 > + pxor %xmm9,%xmm4 > + movd 0(%r8),%xmm5 > + movd 0(%r9),%xmm0 > + movd 0(%r10),%xmm1 > + movd 0(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm12,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm12,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm12,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,0-128(%rax) > + paddd %xmm15,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -128(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm12,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm14,%xmm0 > + pand %xmm13,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm8,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm9,%xmm3 > + movdqa %xmm8,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm8,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm9,%xmm15 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm15 > + paddd %xmm5,%xmm11 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm15 > + paddd %xmm7,%xmm15 > + movd 4(%r8),%xmm5 > + movd 4(%r9),%xmm0 > + movd 4(%r10),%xmm1 > + movd 4(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm11,%xmm7 > + > + movdqa %xmm11,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm11,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,16-128(%rax) > + paddd %xmm14,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -96(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm11,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm13,%xmm0 > + pand %xmm12,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm15,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm8,%xmm4 > + movdqa %xmm15,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm15,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm8,%xmm14 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm14 > + paddd %xmm5,%xmm10 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm14 > + paddd %xmm7,%xmm14 > + movd 8(%r8),%xmm5 > + movd 8(%r9),%xmm0 > + movd 8(%r10),%xmm1 > + movd 8(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm10,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm10,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm10,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,32-128(%rax) > + paddd %xmm13,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm10,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm12,%xmm0 > + pand %xmm11,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm14,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm15,%xmm3 > + movdqa %xmm14,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm14,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm15,%xmm13 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm13 > + paddd %xmm5,%xmm9 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm13 > + paddd %xmm7,%xmm13 > + movd 12(%r8),%xmm5 > + movd 12(%r9),%xmm0 > + movd 12(%r10),%xmm1 > + movd 12(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm9,%xmm7 > + > + movdqa %xmm9,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm9,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,48-128(%rax) > + paddd %xmm12,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -32(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm9,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm11,%xmm0 > + pand %xmm10,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm13,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm14,%xmm4 > + movdqa %xmm13,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm13,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm14,%xmm12 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm12 > + paddd %xmm5,%xmm8 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm12 > + paddd %xmm7,%xmm12 > + movd 16(%r8),%xmm5 > + movd 16(%r9),%xmm0 > + movd 16(%r10),%xmm1 > + movd 16(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm8,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm8,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm8,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,64-128(%rax) > + paddd %xmm11,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 0(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm8,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm10,%xmm0 > + pand %xmm9,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm12,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm13,%xmm3 > + movdqa %xmm12,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm12,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm13,%xmm11 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm11 > + paddd %xmm5,%xmm15 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm11 > + paddd %xmm7,%xmm11 > + movd 20(%r8),%xmm5 > + movd 20(%r9),%xmm0 > + movd 20(%r10),%xmm1 > + movd 20(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm15,%xmm7 > + > + movdqa %xmm15,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm15,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,80-128(%rax) > + paddd %xmm10,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 32(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm15,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm9,%xmm0 > + pand %xmm8,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm11,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm12,%xmm4 > + movdqa %xmm11,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm11,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm12,%xmm10 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm10 > + paddd %xmm5,%xmm14 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm10 > + paddd %xmm7,%xmm10 > + movd 24(%r8),%xmm5 > + movd 24(%r9),%xmm0 > + movd 24(%r10),%xmm1 > + movd 24(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm14,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm14,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm14,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,96-128(%rax) > + paddd %xmm9,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm14,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm8,%xmm0 > + pand %xmm15,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm10,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm11,%xmm3 > + movdqa %xmm10,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm10,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm11,%xmm9 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm9 > + paddd %xmm5,%xmm13 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm9 > + paddd %xmm7,%xmm9 > + movd 28(%r8),%xmm5 > + movd 28(%r9),%xmm0 > + movd 28(%r10),%xmm1 > + movd 28(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm13,%xmm7 > + > + movdqa %xmm13,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm13,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,112-128(%rax) > + paddd %xmm8,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 96(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm13,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm15,%xmm0 > + pand %xmm14,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm9,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm10,%xmm4 > + movdqa %xmm9,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm9,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm10,%xmm8 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm8 > + paddd %xmm5,%xmm12 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm8 > + paddd %xmm7,%xmm8 > + leaq 256(%rbp),%rbp > + movd 32(%r8),%xmm5 > + movd 32(%r9),%xmm0 > + movd 32(%r10),%xmm1 > + movd 32(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm12,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm12,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm12,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,128-128(%rax) > + paddd %xmm15,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -128(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm12,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm14,%xmm0 > + pand %xmm13,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm8,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm9,%xmm3 > + movdqa %xmm8,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm8,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm9,%xmm15 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm15 > + paddd %xmm5,%xmm11 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm15 > + paddd %xmm7,%xmm15 > + movd 36(%r8),%xmm5 > + movd 36(%r9),%xmm0 > + movd 36(%r10),%xmm1 > + movd 36(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm11,%xmm7 > + > + movdqa %xmm11,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm11,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,144-128(%rax) > + paddd %xmm14,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -96(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm11,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm13,%xmm0 > + pand %xmm12,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm15,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm8,%xmm4 > + movdqa %xmm15,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm15,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm8,%xmm14 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm14 > + paddd %xmm5,%xmm10 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm14 > + paddd %xmm7,%xmm14 > + movd 40(%r8),%xmm5 > + movd 40(%r9),%xmm0 > + movd 40(%r10),%xmm1 > + movd 40(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm10,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm10,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm10,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,160-128(%rax) > + paddd %xmm13,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm10,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm12,%xmm0 > + pand %xmm11,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm14,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm15,%xmm3 > + movdqa %xmm14,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm14,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm15,%xmm13 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm13 > + paddd %xmm5,%xmm9 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm13 > + paddd %xmm7,%xmm13 > + movd 44(%r8),%xmm5 > + movd 44(%r9),%xmm0 > + movd 44(%r10),%xmm1 > + movd 44(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm9,%xmm7 > + > + movdqa %xmm9,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm9,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,176-128(%rax) > + paddd %xmm12,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -32(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm9,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm11,%xmm0 > + pand %xmm10,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm13,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm14,%xmm4 > + movdqa %xmm13,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm13,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm14,%xmm12 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm12 > + paddd %xmm5,%xmm8 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm12 > + paddd %xmm7,%xmm12 > + movd 48(%r8),%xmm5 > + movd 48(%r9),%xmm0 > + movd 48(%r10),%xmm1 > + movd 48(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm8,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm8,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm8,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,192-128(%rax) > + paddd %xmm11,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 0(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm8,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm10,%xmm0 > + pand %xmm9,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm12,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm13,%xmm3 > + movdqa %xmm12,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm12,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm13,%xmm11 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm11 > + paddd %xmm5,%xmm15 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm11 > + paddd %xmm7,%xmm11 > + movd 52(%r8),%xmm5 > + movd 52(%r9),%xmm0 > + movd 52(%r10),%xmm1 > + movd 52(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm15,%xmm7 > + > + movdqa %xmm15,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm15,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,208-128(%rax) > + paddd %xmm10,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 32(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm15,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm9,%xmm0 > + pand %xmm8,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm11,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm12,%xmm4 > + movdqa %xmm11,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm11,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm12,%xmm10 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm10 > + paddd %xmm5,%xmm14 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm10 > + paddd %xmm7,%xmm10 > + movd 56(%r8),%xmm5 > + movd 56(%r9),%xmm0 > + movd 56(%r10),%xmm1 > + movd 56(%r11),%xmm2 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm14,%xmm7 > +.byte 102,15,56,0,238 > + movdqa %xmm14,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm14,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,224-128(%rax) > + paddd %xmm9,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm14,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm8,%xmm0 > + pand %xmm15,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm10,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm11,%xmm3 > + movdqa %xmm10,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm10,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm11,%xmm9 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm9 > + paddd %xmm5,%xmm13 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm9 > + paddd %xmm7,%xmm9 > + movd 60(%r8),%xmm5 > + leaq 64(%r8),%r8 > + movd 60(%r9),%xmm0 > + leaq 64(%r9),%r9 > + movd 60(%r10),%xmm1 > + leaq 64(%r10),%r10 > + movd 60(%r11),%xmm2 > + leaq 64(%r11),%r11 > + punpckldq %xmm1,%xmm5 > + punpckldq %xmm2,%xmm0 > + punpckldq %xmm0,%xmm5 > + movdqa %xmm13,%xmm7 > + > + movdqa %xmm13,%xmm2 > +.byte 102,15,56,0,238 > + psrld $6,%xmm7 > + movdqa %xmm13,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,240-128(%rax) > + paddd %xmm8,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 96(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm13,%xmm0 > + prefetcht0 63(%r8) > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm15,%xmm0 > + pand %xmm14,%xmm4 > + pxor %xmm1,%xmm7 > + > + prefetcht0 63(%r9) > + movdqa %xmm9,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm4,%xmm0 > + movdqa %xmm10,%xmm4 > + movdqa %xmm9,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm9,%xmm4 > + > + prefetcht0 63(%r10) > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + prefetcht0 63(%r11) > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm10,%xmm8 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm8 > + paddd %xmm5,%xmm12 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm8 > + paddd %xmm7,%xmm8 > + leaq 256(%rbp),%rbp > + movdqu 0-128(%rax),%xmm5 > + movl $3,%ecx > + jmp .Loop_16_xx > +.align 32 > +.Loop_16_xx: > + movdqa 16-128(%rax),%xmm6 > + paddd 144-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 224-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm12,%xmm7 > + > + movdqa %xmm12,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm12,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,0-128(%rax) > + paddd %xmm15,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -128(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm12,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm14,%xmm0 > + pand %xmm13,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm8,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm9,%xmm3 > + movdqa %xmm8,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm8,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm9,%xmm15 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm15 > + paddd %xmm5,%xmm11 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm15 > + paddd %xmm7,%xmm15 > + movdqa 32-128(%rax),%xmm5 > + paddd 160-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 240-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm11,%xmm7 > + > + movdqa %xmm11,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm11,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,16-128(%rax) > + paddd %xmm14,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -96(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm11,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm13,%xmm0 > + pand %xmm12,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm15,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm8,%xmm4 > + movdqa %xmm15,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm15,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm8,%xmm14 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm14 > + paddd %xmm6,%xmm10 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm14 > + paddd %xmm7,%xmm14 > + movdqa 48-128(%rax),%xmm6 > + paddd 176-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 0-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm10,%xmm7 > + > + movdqa %xmm10,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm10,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,32-128(%rax) > + paddd %xmm13,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm10,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm12,%xmm0 > + pand %xmm11,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm14,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm15,%xmm3 > + movdqa %xmm14,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm14,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm15,%xmm13 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm13 > + paddd %xmm5,%xmm9 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm13 > + paddd %xmm7,%xmm13 > + movdqa 64-128(%rax),%xmm5 > + paddd 192-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 16-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm9,%xmm7 > + > + movdqa %xmm9,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm9,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,48-128(%rax) > + paddd %xmm12,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -32(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm9,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm11,%xmm0 > + pand %xmm10,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm13,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm14,%xmm4 > + movdqa %xmm13,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm13,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm14,%xmm12 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm12 > + paddd %xmm6,%xmm8 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm12 > + paddd %xmm7,%xmm12 > + movdqa 80-128(%rax),%xmm6 > + paddd 208-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 32-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm8,%xmm7 > + > + movdqa %xmm8,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm8,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,64-128(%rax) > + paddd %xmm11,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 0(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm8,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm10,%xmm0 > + pand %xmm9,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm12,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm13,%xmm3 > + movdqa %xmm12,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm12,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm13,%xmm11 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm11 > + paddd %xmm5,%xmm15 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm11 > + paddd %xmm7,%xmm11 > + movdqa 96-128(%rax),%xmm5 > + paddd 224-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 48-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm15,%xmm7 > + > + movdqa %xmm15,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm15,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,80-128(%rax) > + paddd %xmm10,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 32(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm15,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm9,%xmm0 > + pand %xmm8,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm11,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm12,%xmm4 > + movdqa %xmm11,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm11,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm12,%xmm10 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm10 > + paddd %xmm6,%xmm14 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm10 > + paddd %xmm7,%xmm10 > + movdqa 112-128(%rax),%xmm6 > + paddd 240-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 64-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm14,%xmm7 > + > + movdqa %xmm14,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm14,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,96-128(%rax) > + paddd %xmm9,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm14,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm8,%xmm0 > + pand %xmm15,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm10,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm11,%xmm3 > + movdqa %xmm10,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm10,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm11,%xmm9 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm9 > + paddd %xmm5,%xmm13 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm9 > + paddd %xmm7,%xmm9 > + movdqa 128-128(%rax),%xmm5 > + paddd 0-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 80-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm13,%xmm7 > + > + movdqa %xmm13,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm13,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,112-128(%rax) > + paddd %xmm8,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 96(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm13,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm15,%xmm0 > + pand %xmm14,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm9,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm10,%xmm4 > + movdqa %xmm9,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm9,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm10,%xmm8 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm8 > + paddd %xmm6,%xmm12 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm8 > + paddd %xmm7,%xmm8 > + leaq 256(%rbp),%rbp > + movdqa 144-128(%rax),%xmm6 > + paddd 16-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 96-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm12,%xmm7 > + > + movdqa %xmm12,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm12,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,128-128(%rax) > + paddd %xmm15,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -128(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm12,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm14,%xmm0 > + pand %xmm13,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm8,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm9,%xmm3 > + movdqa %xmm8,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm8,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm9,%xmm15 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm15 > + paddd %xmm5,%xmm11 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm15 > + paddd %xmm7,%xmm15 > + movdqa 160-128(%rax),%xmm5 > + paddd 32-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 112-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm11,%xmm7 > + > + movdqa %xmm11,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm11,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,144-128(%rax) > + paddd %xmm14,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -96(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm11,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm13,%xmm0 > + pand %xmm12,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm15,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm8,%xmm4 > + movdqa %xmm15,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm15,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm8,%xmm14 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm14 > + paddd %xmm6,%xmm10 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm14 > + paddd %xmm7,%xmm14 > + movdqa 176-128(%rax),%xmm6 > + paddd 48-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 128-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm10,%xmm7 > + > + movdqa %xmm10,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm10,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,160-128(%rax) > + paddd %xmm13,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm10,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm12,%xmm0 > + pand %xmm11,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm14,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm15,%xmm3 > + movdqa %xmm14,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm14,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm15,%xmm13 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm13 > + paddd %xmm5,%xmm9 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm13 > + paddd %xmm7,%xmm13 > + movdqa 192-128(%rax),%xmm5 > + paddd 64-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 144-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm9,%xmm7 > + > + movdqa %xmm9,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm9,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,176-128(%rax) > + paddd %xmm12,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd -32(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm9,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm11,%xmm0 > + pand %xmm10,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm13,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm14,%xmm4 > + movdqa %xmm13,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm13,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm14,%xmm12 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm12 > + paddd %xmm6,%xmm8 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm12 > + paddd %xmm7,%xmm12 > + movdqa 208-128(%rax),%xmm6 > + paddd 80-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 160-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm8,%xmm7 > + > + movdqa %xmm8,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm8,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,192-128(%rax) > + paddd %xmm11,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 0(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm8,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm8,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm10,%xmm0 > + pand %xmm9,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm12,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm12,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm13,%xmm3 > + movdqa %xmm12,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm12,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm13,%xmm11 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm11 > + paddd %xmm5,%xmm15 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm11 > + paddd %xmm7,%xmm11 > + movdqa 224-128(%rax),%xmm5 > + paddd 96-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 176-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm15,%xmm7 > + > + movdqa %xmm15,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm15,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,208-128(%rax) > + paddd %xmm10,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 32(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm15,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm15,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm9,%xmm0 > + pand %xmm8,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm11,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm11,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm12,%xmm4 > + movdqa %xmm11,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm11,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm12,%xmm10 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm10 > + paddd %xmm6,%xmm14 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm10 > + paddd %xmm7,%xmm10 > + movdqa 240-128(%rax),%xmm6 > + paddd 112-128(%rax),%xmm5 > + > + movdqa %xmm6,%xmm7 > + movdqa %xmm6,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm6,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 192-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm3,%xmm1 > + > + psrld $17,%xmm3 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + psrld $19-17,%xmm3 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm3,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm5 > + movdqa %xmm14,%xmm7 > + > + movdqa %xmm14,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm14,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm5,224-128(%rax) > + paddd %xmm9,%xmm5 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 64(%rbp),%xmm5 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm14,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm14,%xmm3 > + pslld $26-21,%xmm2 > + pandn %xmm8,%xmm0 > + pand %xmm15,%xmm3 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm10,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm10,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm5 > + pxor %xmm3,%xmm0 > + movdqa %xmm11,%xmm3 > + movdqa %xmm10,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm10,%xmm3 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm5 > + pslld $19-10,%xmm2 > + pand %xmm3,%xmm4 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm11,%xmm9 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm4,%xmm9 > + paddd %xmm5,%xmm13 > + pxor %xmm2,%xmm7 > + > + paddd %xmm5,%xmm9 > + paddd %xmm7,%xmm9 > + movdqa 0-128(%rax),%xmm5 > + paddd 128-128(%rax),%xmm6 > + > + movdqa %xmm5,%xmm7 > + movdqa %xmm5,%xmm1 > + psrld $3,%xmm7 > + movdqa %xmm5,%xmm2 > + > + psrld $7,%xmm1 > + movdqa 208-128(%rax),%xmm0 > + pslld $14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $18-7,%xmm1 > + movdqa %xmm0,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $25-14,%xmm2 > + pxor %xmm1,%xmm7 > + psrld $10,%xmm0 > + movdqa %xmm4,%xmm1 > + > + psrld $17,%xmm4 > + pxor %xmm2,%xmm7 > + pslld $13,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + psrld $19-17,%xmm4 > + pxor %xmm1,%xmm0 > + pslld $15-13,%xmm1 > + pxor %xmm4,%xmm0 > + pxor %xmm1,%xmm0 > + paddd %xmm0,%xmm6 > + movdqa %xmm13,%xmm7 > + > + movdqa %xmm13,%xmm2 > + > + psrld $6,%xmm7 > + movdqa %xmm13,%xmm1 > + pslld $7,%xmm2 > + movdqa %xmm6,240-128(%rax) > + paddd %xmm8,%xmm6 > + > + psrld $11,%xmm1 > + pxor %xmm2,%xmm7 > + pslld $21-7,%xmm2 > + paddd 96(%rbp),%xmm6 > + pxor %xmm1,%xmm7 > + > + psrld $25-11,%xmm1 > + movdqa %xmm13,%xmm0 > + > + pxor %xmm2,%xmm7 > + movdqa %xmm13,%xmm4 > + pslld $26-21,%xmm2 > + pandn %xmm15,%xmm0 > + pand %xmm14,%xmm4 > + pxor %xmm1,%xmm7 > + > + > + movdqa %xmm9,%xmm1 > + pxor %xmm2,%xmm7 > + movdqa %xmm9,%xmm2 > + psrld $2,%xmm1 > + paddd %xmm7,%xmm6 > + pxor %xmm4,%xmm0 > + movdqa %xmm10,%xmm4 > + movdqa %xmm9,%xmm7 > + pslld $10,%xmm2 > + pxor %xmm9,%xmm4 > + > + > + psrld $13,%xmm7 > + pxor %xmm2,%xmm1 > + paddd %xmm0,%xmm6 > + pslld $19-10,%xmm2 > + pand %xmm4,%xmm3 > + pxor %xmm7,%xmm1 > + > + > + psrld $22-13,%xmm7 > + pxor %xmm2,%xmm1 > + movdqa %xmm10,%xmm8 > + pslld $30-19,%xmm2 > + pxor %xmm1,%xmm7 > + pxor %xmm3,%xmm8 > + paddd %xmm6,%xmm12 > + pxor %xmm2,%xmm7 > + > + paddd %xmm6,%xmm8 > + paddd %xmm7,%xmm8 > + leaq 256(%rbp),%rbp > + decl %ecx > + jnz .Loop_16_xx > + > + movl $1,%ecx > + leaq K256+128(%rip),%rbp > + > + movdqa (%rbx),%xmm7 > + cmpl 0(%rbx),%ecx > + pxor %xmm0,%xmm0 > + cmovgeq %rbp,%r8 > + cmpl 4(%rbx),%ecx > + movdqa %xmm7,%xmm6 > + cmovgeq %rbp,%r9 > + cmpl 8(%rbx),%ecx > + pcmpgtd %xmm0,%xmm6 > + cmovgeq %rbp,%r10 > + cmpl 12(%rbx),%ecx > + paddd %xmm6,%xmm7 > + cmovgeq %rbp,%r11 > + > + movdqu 0-128(%rdi),%xmm0 > + pand %xmm6,%xmm8 > + movdqu 32-128(%rdi),%xmm1 > + pand %xmm6,%xmm9 > + movdqu 64-128(%rdi),%xmm2 > + pand %xmm6,%xmm10 > + movdqu 96-128(%rdi),%xmm5 > + pand %xmm6,%xmm11 > + paddd %xmm0,%xmm8 > + movdqu 128-128(%rdi),%xmm0 > + pand %xmm6,%xmm12 > + paddd %xmm1,%xmm9 > + movdqu 160-128(%rdi),%xmm1 > + pand %xmm6,%xmm13 > + paddd %xmm2,%xmm10 > + movdqu 192-128(%rdi),%xmm2 > + pand %xmm6,%xmm14 > + paddd %xmm5,%xmm11 > + movdqu 224-128(%rdi),%xmm5 > + pand %xmm6,%xmm15 > + paddd %xmm0,%xmm12 > + paddd %xmm1,%xmm13 > + movdqu %xmm8,0-128(%rdi) > + paddd %xmm2,%xmm14 > + movdqu %xmm9,32-128(%rdi) > + paddd %xmm5,%xmm15 > + movdqu %xmm10,64-128(%rdi) > + movdqu %xmm11,96-128(%rdi) > + movdqu %xmm12,128-128(%rdi) > + movdqu %xmm13,160-128(%rdi) > + movdqu %xmm14,192-128(%rdi) > + movdqu %xmm15,224-128(%rdi) > + > + movdqa %xmm7,(%rbx) > + movdqa .Lpbswap(%rip),%xmm6 > + decl %edx > + jnz .Loop > + > + movl 280(%rsp),%edx > + leaq 16(%rdi),%rdi > + leaq 64(%rsi),%rsi > + decl %edx > + jnz .Loop_grande > + > +.Ldone: > + movq 272(%rsp),%rax > +.cfi_def_cfa %rax,8 > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha256_multi_block,.-sha256_multi_block > +.type sha256_multi_block_shaext,@function > +.align 32 > +sha256_multi_block_shaext: > +.cfi_startproc > +_shaext_shortcut: > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + subq $288,%rsp > + shll $1,%edx > + andq $-256,%rsp > + leaq 128(%rdi),%rdi > + movq %rax,272(%rsp) > +.Lbody_shaext: > + leaq 256(%rsp),%rbx > + leaq K256_shaext+128(%rip),%rbp > + > +.Loop_grande_shaext: > + movl %edx,280(%rsp) > + xorl %edx,%edx > + movq 0(%rsi),%r8 > + movl 8(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,0(%rbx) > + cmovleq %rsp,%r8 > + movq 16(%rsi),%r9 > + movl 24(%rsi),%ecx > + cmpl %edx,%ecx > + cmovgl %ecx,%edx > + testl %ecx,%ecx > + movl %ecx,4(%rbx) > + cmovleq %rsp,%r9 > + testl %edx,%edx > + jz .Ldone_shaext > + > + movq 0-128(%rdi),%xmm12 > + movq 32-128(%rdi),%xmm4 > + movq 64-128(%rdi),%xmm13 > + movq 96-128(%rdi),%xmm5 > + movq 128-128(%rdi),%xmm8 > + movq 160-128(%rdi),%xmm9 > + movq 192-128(%rdi),%xmm10 > + movq 224-128(%rdi),%xmm11 > + > + punpckldq %xmm4,%xmm12 > + punpckldq %xmm5,%xmm13 > + punpckldq %xmm9,%xmm8 > + punpckldq %xmm11,%xmm10 > + movdqa K256_shaext-16(%rip),%xmm3 > + > + movdqa %xmm12,%xmm14 > + movdqa %xmm13,%xmm15 > + punpcklqdq %xmm8,%xmm12 > + punpcklqdq %xmm10,%xmm13 > + punpckhqdq %xmm8,%xmm14 > + punpckhqdq %xmm10,%xmm15 > + > + pshufd $27,%xmm12,%xmm12 > + pshufd $27,%xmm13,%xmm13 > + pshufd $27,%xmm14,%xmm14 > + pshufd $27,%xmm15,%xmm15 > + jmp .Loop_shaext > + > +.align 32 > +.Loop_shaext: > + movdqu 0(%r8),%xmm4 > + movdqu 0(%r9),%xmm8 > + movdqu 16(%r8),%xmm5 > + movdqu 16(%r9),%xmm9 > + movdqu 32(%r8),%xmm6 > +.byte 102,15,56,0,227 > + movdqu 32(%r9),%xmm10 > +.byte 102,68,15,56,0,195 > + movdqu 48(%r8),%xmm7 > + leaq 64(%r8),%r8 > + movdqu 48(%r9),%xmm11 > + leaq 64(%r9),%r9 > + > + movdqa 0-128(%rbp),%xmm0 > +.byte 102,15,56,0,235 > + paddd %xmm4,%xmm0 > + pxor %xmm12,%xmm4 > + movdqa %xmm0,%xmm1 > + movdqa 0-128(%rbp),%xmm2 > +.byte 102,68,15,56,0,203 > + paddd %xmm8,%xmm2 > + movdqa %xmm13,80(%rsp) > +.byte 69,15,56,203,236 > + pxor %xmm14,%xmm8 > + movdqa %xmm2,%xmm0 > + movdqa %xmm15,112(%rsp) > +.byte 69,15,56,203,254 > + pshufd $0x0e,%xmm1,%xmm0 > + pxor %xmm12,%xmm4 > + movdqa %xmm12,64(%rsp) > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + pxor %xmm14,%xmm8 > + movdqa %xmm14,96(%rsp) > + movdqa 16-128(%rbp),%xmm1 > + paddd %xmm5,%xmm1 > +.byte 102,15,56,0,243 > +.byte 69,15,56,203,247 > + > + movdqa %xmm1,%xmm0 > + movdqa 16-128(%rbp),%xmm2 > + paddd %xmm9,%xmm2 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + prefetcht0 127(%r8) > +.byte 102,15,56,0,251 > +.byte 102,68,15,56,0,211 > + prefetcht0 127(%r9) > +.byte 69,15,56,203,254 > + pshufd $0x0e,%xmm1,%xmm0 > +.byte 102,68,15,56,0,219 > +.byte 15,56,204,229 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 32-128(%rbp),%xmm1 > + paddd %xmm6,%xmm1 > +.byte 69,15,56,203,247 > + > + movdqa %xmm1,%xmm0 > + movdqa 32-128(%rbp),%xmm2 > + paddd %xmm10,%xmm2 > +.byte 69,15,56,203,236 > +.byte 69,15,56,204,193 > + movdqa %xmm2,%xmm0 > + movdqa %xmm7,%xmm3 > +.byte 69,15,56,203,254 > + pshufd $0x0e,%xmm1,%xmm0 > +.byte 102,15,58,15,222,4 > + paddd %xmm3,%xmm4 > + movdqa %xmm11,%xmm3 > +.byte 102,65,15,58,15,218,4 > +.byte 15,56,204,238 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 48-128(%rbp),%xmm1 > + paddd %xmm7,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,202 > + > + movdqa %xmm1,%xmm0 > + movdqa 48-128(%rbp),%xmm2 > + paddd %xmm3,%xmm8 > + paddd %xmm11,%xmm2 > +.byte 15,56,205,231 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm4,%xmm3 > +.byte 102,15,58,15,223,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,195 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm5 > + movdqa %xmm8,%xmm3 > +.byte 102,65,15,58,15,219,4 > +.byte 15,56,204,247 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 64-128(%rbp),%xmm1 > + paddd %xmm4,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,211 > + movdqa %xmm1,%xmm0 > + movdqa 64-128(%rbp),%xmm2 > + paddd %xmm3,%xmm9 > + paddd %xmm8,%xmm2 > +.byte 15,56,205,236 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm5,%xmm3 > +.byte 102,15,58,15,220,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,200 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm6 > + movdqa %xmm9,%xmm3 > +.byte 102,65,15,58,15,216,4 > +.byte 15,56,204,252 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 80-128(%rbp),%xmm1 > + paddd %xmm5,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,216 > + movdqa %xmm1,%xmm0 > + movdqa 80-128(%rbp),%xmm2 > + paddd %xmm3,%xmm10 > + paddd %xmm9,%xmm2 > +.byte 15,56,205,245 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm6,%xmm3 > +.byte 102,15,58,15,221,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,209 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm7 > + movdqa %xmm10,%xmm3 > +.byte 102,65,15,58,15,217,4 > +.byte 15,56,204,229 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 96-128(%rbp),%xmm1 > + paddd %xmm6,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,193 > + movdqa %xmm1,%xmm0 > + movdqa 96-128(%rbp),%xmm2 > + paddd %xmm3,%xmm11 > + paddd %xmm10,%xmm2 > +.byte 15,56,205,254 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm7,%xmm3 > +.byte 102,15,58,15,222,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,218 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm4 > + movdqa %xmm11,%xmm3 > +.byte 102,65,15,58,15,218,4 > +.byte 15,56,204,238 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 112-128(%rbp),%xmm1 > + paddd %xmm7,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,202 > + movdqa %xmm1,%xmm0 > + movdqa 112-128(%rbp),%xmm2 > + paddd %xmm3,%xmm8 > + paddd %xmm11,%xmm2 > +.byte 15,56,205,231 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm4,%xmm3 > +.byte 102,15,58,15,223,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,195 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm5 > + movdqa %xmm8,%xmm3 > +.byte 102,65,15,58,15,219,4 > +.byte 15,56,204,247 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 128-128(%rbp),%xmm1 > + paddd %xmm4,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,211 > + movdqa %xmm1,%xmm0 > + movdqa 128-128(%rbp),%xmm2 > + paddd %xmm3,%xmm9 > + paddd %xmm8,%xmm2 > +.byte 15,56,205,236 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm5,%xmm3 > +.byte 102,15,58,15,220,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,200 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm6 > + movdqa %xmm9,%xmm3 > +.byte 102,65,15,58,15,216,4 > +.byte 15,56,204,252 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 144-128(%rbp),%xmm1 > + paddd %xmm5,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,216 > + movdqa %xmm1,%xmm0 > + movdqa 144-128(%rbp),%xmm2 > + paddd %xmm3,%xmm10 > + paddd %xmm9,%xmm2 > +.byte 15,56,205,245 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm6,%xmm3 > +.byte 102,15,58,15,221,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,209 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm7 > + movdqa %xmm10,%xmm3 > +.byte 102,65,15,58,15,217,4 > +.byte 15,56,204,229 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 160-128(%rbp),%xmm1 > + paddd %xmm6,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,193 > + movdqa %xmm1,%xmm0 > + movdqa 160-128(%rbp),%xmm2 > + paddd %xmm3,%xmm11 > + paddd %xmm10,%xmm2 > +.byte 15,56,205,254 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm7,%xmm3 > +.byte 102,15,58,15,222,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,218 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm4 > + movdqa %xmm11,%xmm3 > +.byte 102,65,15,58,15,218,4 > +.byte 15,56,204,238 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 176-128(%rbp),%xmm1 > + paddd %xmm7,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,202 > + movdqa %xmm1,%xmm0 > + movdqa 176-128(%rbp),%xmm2 > + paddd %xmm3,%xmm8 > + paddd %xmm11,%xmm2 > +.byte 15,56,205,231 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm4,%xmm3 > +.byte 102,15,58,15,223,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,195 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm5 > + movdqa %xmm8,%xmm3 > +.byte 102,65,15,58,15,219,4 > +.byte 15,56,204,247 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 192-128(%rbp),%xmm1 > + paddd %xmm4,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,211 > + movdqa %xmm1,%xmm0 > + movdqa 192-128(%rbp),%xmm2 > + paddd %xmm3,%xmm9 > + paddd %xmm8,%xmm2 > +.byte 15,56,205,236 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm5,%xmm3 > +.byte 102,15,58,15,220,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,200 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm6 > + movdqa %xmm9,%xmm3 > +.byte 102,65,15,58,15,216,4 > +.byte 15,56,204,252 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 208-128(%rbp),%xmm1 > + paddd %xmm5,%xmm1 > +.byte 69,15,56,203,247 > +.byte 69,15,56,204,216 > + movdqa %xmm1,%xmm0 > + movdqa 208-128(%rbp),%xmm2 > + paddd %xmm3,%xmm10 > + paddd %xmm9,%xmm2 > +.byte 15,56,205,245 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movdqa %xmm6,%xmm3 > +.byte 102,15,58,15,221,4 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,209 > + pshufd $0x0e,%xmm1,%xmm0 > + paddd %xmm3,%xmm7 > + movdqa %xmm10,%xmm3 > +.byte 102,65,15,58,15,217,4 > + nop > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 224-128(%rbp),%xmm1 > + paddd %xmm6,%xmm1 > +.byte 69,15,56,203,247 > + > + movdqa %xmm1,%xmm0 > + movdqa 224-128(%rbp),%xmm2 > + paddd %xmm3,%xmm11 > + paddd %xmm10,%xmm2 > +.byte 15,56,205,254 > + nop > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + movl $1,%ecx > + pxor %xmm6,%xmm6 > +.byte 69,15,56,203,254 > +.byte 69,15,56,205,218 > + pshufd $0x0e,%xmm1,%xmm0 > + movdqa 240-128(%rbp),%xmm1 > + paddd %xmm7,%xmm1 > + movq (%rbx),%xmm7 > + nop > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + movdqa 240-128(%rbp),%xmm2 > + paddd %xmm11,%xmm2 > +.byte 69,15,56,203,247 > + > + movdqa %xmm1,%xmm0 > + cmpl 0(%rbx),%ecx > + cmovgeq %rsp,%r8 > + cmpl 4(%rbx),%ecx > + cmovgeq %rsp,%r9 > + pshufd $0x00,%xmm7,%xmm9 > +.byte 69,15,56,203,236 > + movdqa %xmm2,%xmm0 > + pshufd $0x55,%xmm7,%xmm10 > + movdqa %xmm7,%xmm11 > +.byte 69,15,56,203,254 > + pshufd $0x0e,%xmm1,%xmm0 > + pcmpgtd %xmm6,%xmm9 > + pcmpgtd %xmm6,%xmm10 > +.byte 69,15,56,203,229 > + pshufd $0x0e,%xmm2,%xmm0 > + pcmpgtd %xmm6,%xmm11 > + movdqa K256_shaext-16(%rip),%xmm3 > +.byte 69,15,56,203,247 > + > + pand %xmm9,%xmm13 > + pand %xmm10,%xmm15 > + pand %xmm9,%xmm12 > + pand %xmm10,%xmm14 > + paddd %xmm7,%xmm11 > + > + paddd 80(%rsp),%xmm13 > + paddd 112(%rsp),%xmm15 > + paddd 64(%rsp),%xmm12 > + paddd 96(%rsp),%xmm14 > + > + movq %xmm11,(%rbx) > + decl %edx > + jnz .Loop_shaext > + > + movl 280(%rsp),%edx > + > + pshufd $27,%xmm12,%xmm12 > + pshufd $27,%xmm13,%xmm13 > + pshufd $27,%xmm14,%xmm14 > + pshufd $27,%xmm15,%xmm15 > + > + movdqa %xmm12,%xmm5 > + movdqa %xmm13,%xmm6 > + punpckldq %xmm14,%xmm12 > + punpckhdq %xmm14,%xmm5 > + punpckldq %xmm15,%xmm13 > + punpckhdq %xmm15,%xmm6 > + > + movq %xmm12,0-128(%rdi) > + psrldq $8,%xmm12 > + movq %xmm5,128-128(%rdi) > + psrldq $8,%xmm5 > + movq %xmm12,32-128(%rdi) > + movq %xmm5,160-128(%rdi) > + > + movq %xmm13,64-128(%rdi) > + psrldq $8,%xmm13 > + movq %xmm6,192-128(%rdi) > + psrldq $8,%xmm6 > + movq %xmm13,96-128(%rdi) > + movq %xmm6,224-128(%rdi) > + > + leaq 8(%rdi),%rdi > + leaq 32(%rsi),%rsi > + decl %edx > + jnz .Loop_grande_shaext > + > +.Ldone_shaext: > + > + movq -16(%rax),%rbp > +.cfi_restore %rbp > + movq -8(%rax),%rbx > +.cfi_restore %rbx > + leaq (%rax),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue_shaext: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha256_multi_block_shaext,.-sha256_multi_block_shaext > +.align 256 > +K256: > +.long 1116352408,1116352408,1116352408,1116352408 > +.long 1116352408,1116352408,1116352408,1116352408 > +.long 1899447441,1899447441,1899447441,1899447441 > +.long 1899447441,1899447441,1899447441,1899447441 > +.long 3049323471,3049323471,3049323471,3049323471 > +.long 3049323471,3049323471,3049323471,3049323471 > +.long 3921009573,3921009573,3921009573,3921009573 > +.long 3921009573,3921009573,3921009573,3921009573 > +.long 961987163,961987163,961987163,961987163 > +.long 961987163,961987163,961987163,961987163 > +.long 1508970993,1508970993,1508970993,1508970993 > +.long 1508970993,1508970993,1508970993,1508970993 > +.long 2453635748,2453635748,2453635748,2453635748 > +.long 2453635748,2453635748,2453635748,2453635748 > +.long 2870763221,2870763221,2870763221,2870763221 > +.long 2870763221,2870763221,2870763221,2870763221 > +.long 3624381080,3624381080,3624381080,3624381080 > +.long 3624381080,3624381080,3624381080,3624381080 > +.long 310598401,310598401,310598401,310598401 > +.long 310598401,310598401,310598401,310598401 > +.long 607225278,607225278,607225278,607225278 > +.long 607225278,607225278,607225278,607225278 > +.long 1426881987,1426881987,1426881987,1426881987 > +.long 1426881987,1426881987,1426881987,1426881987 > +.long 1925078388,1925078388,1925078388,1925078388 > +.long 1925078388,1925078388,1925078388,1925078388 > +.long 2162078206,2162078206,2162078206,2162078206 > +.long 2162078206,2162078206,2162078206,2162078206 > +.long 2614888103,2614888103,2614888103,2614888103 > +.long 2614888103,2614888103,2614888103,2614888103 > +.long 3248222580,3248222580,3248222580,3248222580 > +.long 3248222580,3248222580,3248222580,3248222580 > +.long 3835390401,3835390401,3835390401,3835390401 > +.long 3835390401,3835390401,3835390401,3835390401 > +.long 4022224774,4022224774,4022224774,4022224774 > +.long 4022224774,4022224774,4022224774,4022224774 > +.long 264347078,264347078,264347078,264347078 > +.long 264347078,264347078,264347078,264347078 > +.long 604807628,604807628,604807628,604807628 > +.long 604807628,604807628,604807628,604807628 > +.long 770255983,770255983,770255983,770255983 > +.long 770255983,770255983,770255983,770255983 > +.long 1249150122,1249150122,1249150122,1249150122 > +.long 1249150122,1249150122,1249150122,1249150122 > +.long 1555081692,1555081692,1555081692,1555081692 > +.long 1555081692,1555081692,1555081692,1555081692 > +.long 1996064986,1996064986,1996064986,1996064986 > +.long 1996064986,1996064986,1996064986,1996064986 > +.long 2554220882,2554220882,2554220882,2554220882 > +.long 2554220882,2554220882,2554220882,2554220882 > +.long 2821834349,2821834349,2821834349,2821834349 > +.long 2821834349,2821834349,2821834349,2821834349 > +.long 2952996808,2952996808,2952996808,2952996808 > +.long 2952996808,2952996808,2952996808,2952996808 > +.long 3210313671,3210313671,3210313671,3210313671 > +.long 3210313671,3210313671,3210313671,3210313671 > +.long 3336571891,3336571891,3336571891,3336571891 > +.long 3336571891,3336571891,3336571891,3336571891 > +.long 3584528711,3584528711,3584528711,3584528711 > +.long 3584528711,3584528711,3584528711,3584528711 > +.long 113926993,113926993,113926993,113926993 > +.long 113926993,113926993,113926993,113926993 > +.long 338241895,338241895,338241895,338241895 > +.long 338241895,338241895,338241895,338241895 > +.long 666307205,666307205,666307205,666307205 > +.long 666307205,666307205,666307205,666307205 > +.long 773529912,773529912,773529912,773529912 > +.long 773529912,773529912,773529912,773529912 > +.long 1294757372,1294757372,1294757372,1294757372 > +.long 1294757372,1294757372,1294757372,1294757372 > +.long 1396182291,1396182291,1396182291,1396182291 > +.long 1396182291,1396182291,1396182291,1396182291 > +.long 1695183700,1695183700,1695183700,1695183700 > +.long 1695183700,1695183700,1695183700,1695183700 > +.long 1986661051,1986661051,1986661051,1986661051 > +.long 1986661051,1986661051,1986661051,1986661051 > +.long 2177026350,2177026350,2177026350,2177026350 > +.long 2177026350,2177026350,2177026350,2177026350 > +.long 2456956037,2456956037,2456956037,2456956037 > +.long 2456956037,2456956037,2456956037,2456956037 > +.long 2730485921,2730485921,2730485921,2730485921 > +.long 2730485921,2730485921,2730485921,2730485921 > +.long 2820302411,2820302411,2820302411,2820302411 > +.long 2820302411,2820302411,2820302411,2820302411 > +.long 3259730800,3259730800,3259730800,3259730800 > +.long 3259730800,3259730800,3259730800,3259730800 > +.long 3345764771,3345764771,3345764771,3345764771 > +.long 3345764771,3345764771,3345764771,3345764771 > +.long 3516065817,3516065817,3516065817,3516065817 > +.long 3516065817,3516065817,3516065817,3516065817 > +.long 3600352804,3600352804,3600352804,3600352804 > +.long 3600352804,3600352804,3600352804,3600352804 > +.long 4094571909,4094571909,4094571909,4094571909 > +.long 4094571909,4094571909,4094571909,4094571909 > +.long 275423344,275423344,275423344,275423344 > +.long 275423344,275423344,275423344,275423344 > +.long 430227734,430227734,430227734,430227734 > +.long 430227734,430227734,430227734,430227734 > +.long 506948616,506948616,506948616,506948616 > +.long 506948616,506948616,506948616,506948616 > +.long 659060556,659060556,659060556,659060556 > +.long 659060556,659060556,659060556,659060556 > +.long 883997877,883997877,883997877,883997877 > +.long 883997877,883997877,883997877,883997877 > +.long 958139571,958139571,958139571,958139571 > +.long 958139571,958139571,958139571,958139571 > +.long 1322822218,1322822218,1322822218,1322822218 > +.long 1322822218,1322822218,1322822218,1322822218 > +.long 1537002063,1537002063,1537002063,1537002063 > +.long 1537002063,1537002063,1537002063,1537002063 > +.long 1747873779,1747873779,1747873779,1747873779 > +.long 1747873779,1747873779,1747873779,1747873779 > +.long 1955562222,1955562222,1955562222,1955562222 > +.long 1955562222,1955562222,1955562222,1955562222 > +.long 2024104815,2024104815,2024104815,2024104815 > +.long 2024104815,2024104815,2024104815,2024104815 > +.long 2227730452,2227730452,2227730452,2227730452 > +.long 2227730452,2227730452,2227730452,2227730452 > +.long 2361852424,2361852424,2361852424,2361852424 > +.long 2361852424,2361852424,2361852424,2361852424 > +.long 2428436474,2428436474,2428436474,2428436474 > +.long 2428436474,2428436474,2428436474,2428436474 > +.long 2756734187,2756734187,2756734187,2756734187 > +.long 2756734187,2756734187,2756734187,2756734187 > +.long 3204031479,3204031479,3204031479,3204031479 > +.long 3204031479,3204031479,3204031479,3204031479 > +.long 3329325298,3329325298,3329325298,3329325298 > +.long 3329325298,3329325298,3329325298,3329325298 > +.Lpbswap: > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +K256_shaext: > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > +.byte > 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,= 9 > 7,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,8= 2, > 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101= ,1 > 10,115,115,108,46,111,114,103,62,0 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64= .S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S > new file mode 100644 > index 0000000000..a5d3cf5068 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S > @@ -0,0 +1,3097 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/sha/asm/sha512-x86_64.pl > +# > +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl sha256_block_data_order > +.type sha256_block_data_order,@function > +.align 16 > +sha256_block_data_order: > +.cfi_startproc > + leaq OPENSSL_ia32cap_P(%rip),%r11 > + movl 0(%r11),%r9d > + movl 4(%r11),%r10d > + movl 8(%r11),%r11d > + testl $536870912,%r11d > + jnz _shaext_shortcut > + testl $512,%r10d > + jnz .Lssse3_shortcut > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_offset %r15,-56 > + shlq $4,%rdx > + subq $64+32,%rsp > + leaq (%rsi,%rdx,4),%rdx > + andq $-64,%rsp > + movq %rdi,64+0(%rsp) > + movq %rsi,64+8(%rsp) > + movq %rdx,64+16(%rsp) > + movq %rax,88(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 > +.Lprologue: > + > + movl 0(%rdi),%eax > + movl 4(%rdi),%ebx > + movl 8(%rdi),%ecx > + movl 12(%rdi),%edx > + movl 16(%rdi),%r8d > + movl 20(%rdi),%r9d > + movl 24(%rdi),%r10d > + movl 28(%rdi),%r11d > + jmp .Lloop > + > +.align 16 > +.Lloop: > + movl %ebx,%edi > + leaq K256(%rip),%rbp > + xorl %ecx,%edi > + movl 0(%rsi),%r12d > + movl %r8d,%r13d > + movl %eax,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r9d,%r15d > + > + xorl %r8d,%r13d > + rorl $9,%r14d > + xorl %r10d,%r15d > + > + movl %r12d,0(%rsp) > + xorl %eax,%r14d > + andl %r8d,%r15d > + > + rorl $5,%r13d > + addl %r11d,%r12d > + xorl %r10d,%r15d > + > + rorl $11,%r14d > + xorl %r8d,%r13d > + addl %r15d,%r12d > + > + movl %eax,%r15d > + addl (%rbp),%r12d > + xorl %eax,%r14d > + > + xorl %ebx,%r15d > + rorl $6,%r13d > + movl %ebx,%r11d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r11d > + addl %r12d,%edx > + addl %r12d,%r11d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r11d > + movl 4(%rsi),%r12d > + movl %edx,%r13d > + movl %r11d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r8d,%edi > + > + xorl %edx,%r13d > + rorl $9,%r14d > + xorl %r9d,%edi > + > + movl %r12d,4(%rsp) > + xorl %r11d,%r14d > + andl %edx,%edi > + > + rorl $5,%r13d > + addl %r10d,%r12d > + xorl %r9d,%edi > + > + rorl $11,%r14d > + xorl %edx,%r13d > + addl %edi,%r12d > + > + movl %r11d,%edi > + addl (%rbp),%r12d > + xorl %r11d,%r14d > + > + xorl %eax,%edi > + rorl $6,%r13d > + movl %eax,%r10d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r10d > + addl %r12d,%ecx > + addl %r12d,%r10d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r10d > + movl 8(%rsi),%r12d > + movl %ecx,%r13d > + movl %r10d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %edx,%r15d > + > + xorl %ecx,%r13d > + rorl $9,%r14d > + xorl %r8d,%r15d > + > + movl %r12d,8(%rsp) > + xorl %r10d,%r14d > + andl %ecx,%r15d > + > + rorl $5,%r13d > + addl %r9d,%r12d > + xorl %r8d,%r15d > + > + rorl $11,%r14d > + xorl %ecx,%r13d > + addl %r15d,%r12d > + > + movl %r10d,%r15d > + addl (%rbp),%r12d > + xorl %r10d,%r14d > + > + xorl %r11d,%r15d > + rorl $6,%r13d > + movl %r11d,%r9d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r9d > + addl %r12d,%ebx > + addl %r12d,%r9d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r9d > + movl 12(%rsi),%r12d > + movl %ebx,%r13d > + movl %r9d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %ecx,%edi > + > + xorl %ebx,%r13d > + rorl $9,%r14d > + xorl %edx,%edi > + > + movl %r12d,12(%rsp) > + xorl %r9d,%r14d > + andl %ebx,%edi > + > + rorl $5,%r13d > + addl %r8d,%r12d > + xorl %edx,%edi > + > + rorl $11,%r14d > + xorl %ebx,%r13d > + addl %edi,%r12d > + > + movl %r9d,%edi > + addl (%rbp),%r12d > + xorl %r9d,%r14d > + > + xorl %r10d,%edi > + rorl $6,%r13d > + movl %r10d,%r8d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r8d > + addl %r12d,%eax > + addl %r12d,%r8d > + > + leaq 20(%rbp),%rbp > + addl %r14d,%r8d > + movl 16(%rsi),%r12d > + movl %eax,%r13d > + movl %r8d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %ebx,%r15d > + > + xorl %eax,%r13d > + rorl $9,%r14d > + xorl %ecx,%r15d > + > + movl %r12d,16(%rsp) > + xorl %r8d,%r14d > + andl %eax,%r15d > + > + rorl $5,%r13d > + addl %edx,%r12d > + xorl %ecx,%r15d > + > + rorl $11,%r14d > + xorl %eax,%r13d > + addl %r15d,%r12d > + > + movl %r8d,%r15d > + addl (%rbp),%r12d > + xorl %r8d,%r14d > + > + xorl %r9d,%r15d > + rorl $6,%r13d > + movl %r9d,%edx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%edx > + addl %r12d,%r11d > + addl %r12d,%edx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%edx > + movl 20(%rsi),%r12d > + movl %r11d,%r13d > + movl %edx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %eax,%edi > + > + xorl %r11d,%r13d > + rorl $9,%r14d > + xorl %ebx,%edi > + > + movl %r12d,20(%rsp) > + xorl %edx,%r14d > + andl %r11d,%edi > + > + rorl $5,%r13d > + addl %ecx,%r12d > + xorl %ebx,%edi > + > + rorl $11,%r14d > + xorl %r11d,%r13d > + addl %edi,%r12d > + > + movl %edx,%edi > + addl (%rbp),%r12d > + xorl %edx,%r14d > + > + xorl %r8d,%edi > + rorl $6,%r13d > + movl %r8d,%ecx > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%ecx > + addl %r12d,%r10d > + addl %r12d,%ecx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%ecx > + movl 24(%rsi),%r12d > + movl %r10d,%r13d > + movl %ecx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r11d,%r15d > + > + xorl %r10d,%r13d > + rorl $9,%r14d > + xorl %eax,%r15d > + > + movl %r12d,24(%rsp) > + xorl %ecx,%r14d > + andl %r10d,%r15d > + > + rorl $5,%r13d > + addl %ebx,%r12d > + xorl %eax,%r15d > + > + rorl $11,%r14d > + xorl %r10d,%r13d > + addl %r15d,%r12d > + > + movl %ecx,%r15d > + addl (%rbp),%r12d > + xorl %ecx,%r14d > + > + xorl %edx,%r15d > + rorl $6,%r13d > + movl %edx,%ebx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%ebx > + addl %r12d,%r9d > + addl %r12d,%ebx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%ebx > + movl 28(%rsi),%r12d > + movl %r9d,%r13d > + movl %ebx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r10d,%edi > + > + xorl %r9d,%r13d > + rorl $9,%r14d > + xorl %r11d,%edi > + > + movl %r12d,28(%rsp) > + xorl %ebx,%r14d > + andl %r9d,%edi > + > + rorl $5,%r13d > + addl %eax,%r12d > + xorl %r11d,%edi > + > + rorl $11,%r14d > + xorl %r9d,%r13d > + addl %edi,%r12d > + > + movl %ebx,%edi > + addl (%rbp),%r12d > + xorl %ebx,%r14d > + > + xorl %ecx,%edi > + rorl $6,%r13d > + movl %ecx,%eax > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%eax > + addl %r12d,%r8d > + addl %r12d,%eax > + > + leaq 20(%rbp),%rbp > + addl %r14d,%eax > + movl 32(%rsi),%r12d > + movl %r8d,%r13d > + movl %eax,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r9d,%r15d > + > + xorl %r8d,%r13d > + rorl $9,%r14d > + xorl %r10d,%r15d > + > + movl %r12d,32(%rsp) > + xorl %eax,%r14d > + andl %r8d,%r15d > + > + rorl $5,%r13d > + addl %r11d,%r12d > + xorl %r10d,%r15d > + > + rorl $11,%r14d > + xorl %r8d,%r13d > + addl %r15d,%r12d > + > + movl %eax,%r15d > + addl (%rbp),%r12d > + xorl %eax,%r14d > + > + xorl %ebx,%r15d > + rorl $6,%r13d > + movl %ebx,%r11d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r11d > + addl %r12d,%edx > + addl %r12d,%r11d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r11d > + movl 36(%rsi),%r12d > + movl %edx,%r13d > + movl %r11d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r8d,%edi > + > + xorl %edx,%r13d > + rorl $9,%r14d > + xorl %r9d,%edi > + > + movl %r12d,36(%rsp) > + xorl %r11d,%r14d > + andl %edx,%edi > + > + rorl $5,%r13d > + addl %r10d,%r12d > + xorl %r9d,%edi > + > + rorl $11,%r14d > + xorl %edx,%r13d > + addl %edi,%r12d > + > + movl %r11d,%edi > + addl (%rbp),%r12d > + xorl %r11d,%r14d > + > + xorl %eax,%edi > + rorl $6,%r13d > + movl %eax,%r10d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r10d > + addl %r12d,%ecx > + addl %r12d,%r10d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r10d > + movl 40(%rsi),%r12d > + movl %ecx,%r13d > + movl %r10d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %edx,%r15d > + > + xorl %ecx,%r13d > + rorl $9,%r14d > + xorl %r8d,%r15d > + > + movl %r12d,40(%rsp) > + xorl %r10d,%r14d > + andl %ecx,%r15d > + > + rorl $5,%r13d > + addl %r9d,%r12d > + xorl %r8d,%r15d > + > + rorl $11,%r14d > + xorl %ecx,%r13d > + addl %r15d,%r12d > + > + movl %r10d,%r15d > + addl (%rbp),%r12d > + xorl %r10d,%r14d > + > + xorl %r11d,%r15d > + rorl $6,%r13d > + movl %r11d,%r9d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r9d > + addl %r12d,%ebx > + addl %r12d,%r9d > + > + leaq 4(%rbp),%rbp > + addl %r14d,%r9d > + movl 44(%rsi),%r12d > + movl %ebx,%r13d > + movl %r9d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %ecx,%edi > + > + xorl %ebx,%r13d > + rorl $9,%r14d > + xorl %edx,%edi > + > + movl %r12d,44(%rsp) > + xorl %r9d,%r14d > + andl %ebx,%edi > + > + rorl $5,%r13d > + addl %r8d,%r12d > + xorl %edx,%edi > + > + rorl $11,%r14d > + xorl %ebx,%r13d > + addl %edi,%r12d > + > + movl %r9d,%edi > + addl (%rbp),%r12d > + xorl %r9d,%r14d > + > + xorl %r10d,%edi > + rorl $6,%r13d > + movl %r10d,%r8d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r8d > + addl %r12d,%eax > + addl %r12d,%r8d > + > + leaq 20(%rbp),%rbp > + addl %r14d,%r8d > + movl 48(%rsi),%r12d > + movl %eax,%r13d > + movl %r8d,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %ebx,%r15d > + > + xorl %eax,%r13d > + rorl $9,%r14d > + xorl %ecx,%r15d > + > + movl %r12d,48(%rsp) > + xorl %r8d,%r14d > + andl %eax,%r15d > + > + rorl $5,%r13d > + addl %edx,%r12d > + xorl %ecx,%r15d > + > + rorl $11,%r14d > + xorl %eax,%r13d > + addl %r15d,%r12d > + > + movl %r8d,%r15d > + addl (%rbp),%r12d > + xorl %r8d,%r14d > + > + xorl %r9d,%r15d > + rorl $6,%r13d > + movl %r9d,%edx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%edx > + addl %r12d,%r11d > + addl %r12d,%edx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%edx > + movl 52(%rsi),%r12d > + movl %r11d,%r13d > + movl %edx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %eax,%edi > + > + xorl %r11d,%r13d > + rorl $9,%r14d > + xorl %ebx,%edi > + > + movl %r12d,52(%rsp) > + xorl %edx,%r14d > + andl %r11d,%edi > + > + rorl $5,%r13d > + addl %ecx,%r12d > + xorl %ebx,%edi > + > + rorl $11,%r14d > + xorl %r11d,%r13d > + addl %edi,%r12d > + > + movl %edx,%edi > + addl (%rbp),%r12d > + xorl %edx,%r14d > + > + xorl %r8d,%edi > + rorl $6,%r13d > + movl %r8d,%ecx > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%ecx > + addl %r12d,%r10d > + addl %r12d,%ecx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%ecx > + movl 56(%rsi),%r12d > + movl %r10d,%r13d > + movl %ecx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r11d,%r15d > + > + xorl %r10d,%r13d > + rorl $9,%r14d > + xorl %eax,%r15d > + > + movl %r12d,56(%rsp) > + xorl %ecx,%r14d > + andl %r10d,%r15d > + > + rorl $5,%r13d > + addl %ebx,%r12d > + xorl %eax,%r15d > + > + rorl $11,%r14d > + xorl %r10d,%r13d > + addl %r15d,%r12d > + > + movl %ecx,%r15d > + addl (%rbp),%r12d > + xorl %ecx,%r14d > + > + xorl %edx,%r15d > + rorl $6,%r13d > + movl %edx,%ebx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%ebx > + addl %r12d,%r9d > + addl %r12d,%ebx > + > + leaq 4(%rbp),%rbp > + addl %r14d,%ebx > + movl 60(%rsi),%r12d > + movl %r9d,%r13d > + movl %ebx,%r14d > + bswapl %r12d > + rorl $14,%r13d > + movl %r10d,%edi > + > + xorl %r9d,%r13d > + rorl $9,%r14d > + xorl %r11d,%edi > + > + movl %r12d,60(%rsp) > + xorl %ebx,%r14d > + andl %r9d,%edi > + > + rorl $5,%r13d > + addl %eax,%r12d > + xorl %r11d,%edi > + > + rorl $11,%r14d > + xorl %r9d,%r13d > + addl %edi,%r12d > + > + movl %ebx,%edi > + addl (%rbp),%r12d > + xorl %ebx,%r14d > + > + xorl %ecx,%edi > + rorl $6,%r13d > + movl %ecx,%eax > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%eax > + addl %r12d,%r8d > + addl %r12d,%eax > + > + leaq 20(%rbp),%rbp > + jmp .Lrounds_16_xx > +.align 16 > +.Lrounds_16_xx: > + movl 4(%rsp),%r13d > + movl 56(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%eax > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 36(%rsp),%r12d > + > + addl 0(%rsp),%r12d > + movl %r8d,%r13d > + addl %r15d,%r12d > + movl %eax,%r14d > + rorl $14,%r13d > + movl %r9d,%r15d > + > + xorl %r8d,%r13d > + rorl $9,%r14d > + xorl %r10d,%r15d > + > + movl %r12d,0(%rsp) > + xorl %eax,%r14d > + andl %r8d,%r15d > + > + rorl $5,%r13d > + addl %r11d,%r12d > + xorl %r10d,%r15d > + > + rorl $11,%r14d > + xorl %r8d,%r13d > + addl %r15d,%r12d > + > + movl %eax,%r15d > + addl (%rbp),%r12d > + xorl %eax,%r14d > + > + xorl %ebx,%r15d > + rorl $6,%r13d > + movl %ebx,%r11d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r11d > + addl %r12d,%edx > + addl %r12d,%r11d > + > + leaq 4(%rbp),%rbp > + movl 8(%rsp),%r13d > + movl 60(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r11d > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 40(%rsp),%r12d > + > + addl 4(%rsp),%r12d > + movl %edx,%r13d > + addl %edi,%r12d > + movl %r11d,%r14d > + rorl $14,%r13d > + movl %r8d,%edi > + > + xorl %edx,%r13d > + rorl $9,%r14d > + xorl %r9d,%edi > + > + movl %r12d,4(%rsp) > + xorl %r11d,%r14d > + andl %edx,%edi > + > + rorl $5,%r13d > + addl %r10d,%r12d > + xorl %r9d,%edi > + > + rorl $11,%r14d > + xorl %edx,%r13d > + addl %edi,%r12d > + > + movl %r11d,%edi > + addl (%rbp),%r12d > + xorl %r11d,%r14d > + > + xorl %eax,%edi > + rorl $6,%r13d > + movl %eax,%r10d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r10d > + addl %r12d,%ecx > + addl %r12d,%r10d > + > + leaq 4(%rbp),%rbp > + movl 12(%rsp),%r13d > + movl 0(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r10d > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 44(%rsp),%r12d > + > + addl 8(%rsp),%r12d > + movl %ecx,%r13d > + addl %r15d,%r12d > + movl %r10d,%r14d > + rorl $14,%r13d > + movl %edx,%r15d > + > + xorl %ecx,%r13d > + rorl $9,%r14d > + xorl %r8d,%r15d > + > + movl %r12d,8(%rsp) > + xorl %r10d,%r14d > + andl %ecx,%r15d > + > + rorl $5,%r13d > + addl %r9d,%r12d > + xorl %r8d,%r15d > + > + rorl $11,%r14d > + xorl %ecx,%r13d > + addl %r15d,%r12d > + > + movl %r10d,%r15d > + addl (%rbp),%r12d > + xorl %r10d,%r14d > + > + xorl %r11d,%r15d > + rorl $6,%r13d > + movl %r11d,%r9d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r9d > + addl %r12d,%ebx > + addl %r12d,%r9d > + > + leaq 4(%rbp),%rbp > + movl 16(%rsp),%r13d > + movl 4(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r9d > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 48(%rsp),%r12d > + > + addl 12(%rsp),%r12d > + movl %ebx,%r13d > + addl %edi,%r12d > + movl %r9d,%r14d > + rorl $14,%r13d > + movl %ecx,%edi > + > + xorl %ebx,%r13d > + rorl $9,%r14d > + xorl %edx,%edi > + > + movl %r12d,12(%rsp) > + xorl %r9d,%r14d > + andl %ebx,%edi > + > + rorl $5,%r13d > + addl %r8d,%r12d > + xorl %edx,%edi > + > + rorl $11,%r14d > + xorl %ebx,%r13d > + addl %edi,%r12d > + > + movl %r9d,%edi > + addl (%rbp),%r12d > + xorl %r9d,%r14d > + > + xorl %r10d,%edi > + rorl $6,%r13d > + movl %r10d,%r8d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r8d > + addl %r12d,%eax > + addl %r12d,%r8d > + > + leaq 20(%rbp),%rbp > + movl 20(%rsp),%r13d > + movl 8(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r8d > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 52(%rsp),%r12d > + > + addl 16(%rsp),%r12d > + movl %eax,%r13d > + addl %r15d,%r12d > + movl %r8d,%r14d > + rorl $14,%r13d > + movl %ebx,%r15d > + > + xorl %eax,%r13d > + rorl $9,%r14d > + xorl %ecx,%r15d > + > + movl %r12d,16(%rsp) > + xorl %r8d,%r14d > + andl %eax,%r15d > + > + rorl $5,%r13d > + addl %edx,%r12d > + xorl %ecx,%r15d > + > + rorl $11,%r14d > + xorl %eax,%r13d > + addl %r15d,%r12d > + > + movl %r8d,%r15d > + addl (%rbp),%r12d > + xorl %r8d,%r14d > + > + xorl %r9d,%r15d > + rorl $6,%r13d > + movl %r9d,%edx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%edx > + addl %r12d,%r11d > + addl %r12d,%edx > + > + leaq 4(%rbp),%rbp > + movl 24(%rsp),%r13d > + movl 12(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%edx > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 56(%rsp),%r12d > + > + addl 20(%rsp),%r12d > + movl %r11d,%r13d > + addl %edi,%r12d > + movl %edx,%r14d > + rorl $14,%r13d > + movl %eax,%edi > + > + xorl %r11d,%r13d > + rorl $9,%r14d > + xorl %ebx,%edi > + > + movl %r12d,20(%rsp) > + xorl %edx,%r14d > + andl %r11d,%edi > + > + rorl $5,%r13d > + addl %ecx,%r12d > + xorl %ebx,%edi > + > + rorl $11,%r14d > + xorl %r11d,%r13d > + addl %edi,%r12d > + > + movl %edx,%edi > + addl (%rbp),%r12d > + xorl %edx,%r14d > + > + xorl %r8d,%edi > + rorl $6,%r13d > + movl %r8d,%ecx > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%ecx > + addl %r12d,%r10d > + addl %r12d,%ecx > + > + leaq 4(%rbp),%rbp > + movl 28(%rsp),%r13d > + movl 16(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%ecx > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 60(%rsp),%r12d > + > + addl 24(%rsp),%r12d > + movl %r10d,%r13d > + addl %r15d,%r12d > + movl %ecx,%r14d > + rorl $14,%r13d > + movl %r11d,%r15d > + > + xorl %r10d,%r13d > + rorl $9,%r14d > + xorl %eax,%r15d > + > + movl %r12d,24(%rsp) > + xorl %ecx,%r14d > + andl %r10d,%r15d > + > + rorl $5,%r13d > + addl %ebx,%r12d > + xorl %eax,%r15d > + > + rorl $11,%r14d > + xorl %r10d,%r13d > + addl %r15d,%r12d > + > + movl %ecx,%r15d > + addl (%rbp),%r12d > + xorl %ecx,%r14d > + > + xorl %edx,%r15d > + rorl $6,%r13d > + movl %edx,%ebx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%ebx > + addl %r12d,%r9d > + addl %r12d,%ebx > + > + leaq 4(%rbp),%rbp > + movl 32(%rsp),%r13d > + movl 20(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%ebx > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 0(%rsp),%r12d > + > + addl 28(%rsp),%r12d > + movl %r9d,%r13d > + addl %edi,%r12d > + movl %ebx,%r14d > + rorl $14,%r13d > + movl %r10d,%edi > + > + xorl %r9d,%r13d > + rorl $9,%r14d > + xorl %r11d,%edi > + > + movl %r12d,28(%rsp) > + xorl %ebx,%r14d > + andl %r9d,%edi > + > + rorl $5,%r13d > + addl %eax,%r12d > + xorl %r11d,%edi > + > + rorl $11,%r14d > + xorl %r9d,%r13d > + addl %edi,%r12d > + > + movl %ebx,%edi > + addl (%rbp),%r12d > + xorl %ebx,%r14d > + > + xorl %ecx,%edi > + rorl $6,%r13d > + movl %ecx,%eax > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%eax > + addl %r12d,%r8d > + addl %r12d,%eax > + > + leaq 20(%rbp),%rbp > + movl 36(%rsp),%r13d > + movl 24(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%eax > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 4(%rsp),%r12d > + > + addl 32(%rsp),%r12d > + movl %r8d,%r13d > + addl %r15d,%r12d > + movl %eax,%r14d > + rorl $14,%r13d > + movl %r9d,%r15d > + > + xorl %r8d,%r13d > + rorl $9,%r14d > + xorl %r10d,%r15d > + > + movl %r12d,32(%rsp) > + xorl %eax,%r14d > + andl %r8d,%r15d > + > + rorl $5,%r13d > + addl %r11d,%r12d > + xorl %r10d,%r15d > + > + rorl $11,%r14d > + xorl %r8d,%r13d > + addl %r15d,%r12d > + > + movl %eax,%r15d > + addl (%rbp),%r12d > + xorl %eax,%r14d > + > + xorl %ebx,%r15d > + rorl $6,%r13d > + movl %ebx,%r11d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r11d > + addl %r12d,%edx > + addl %r12d,%r11d > + > + leaq 4(%rbp),%rbp > + movl 40(%rsp),%r13d > + movl 28(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r11d > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 8(%rsp),%r12d > + > + addl 36(%rsp),%r12d > + movl %edx,%r13d > + addl %edi,%r12d > + movl %r11d,%r14d > + rorl $14,%r13d > + movl %r8d,%edi > + > + xorl %edx,%r13d > + rorl $9,%r14d > + xorl %r9d,%edi > + > + movl %r12d,36(%rsp) > + xorl %r11d,%r14d > + andl %edx,%edi > + > + rorl $5,%r13d > + addl %r10d,%r12d > + xorl %r9d,%edi > + > + rorl $11,%r14d > + xorl %edx,%r13d > + addl %edi,%r12d > + > + movl %r11d,%edi > + addl (%rbp),%r12d > + xorl %r11d,%r14d > + > + xorl %eax,%edi > + rorl $6,%r13d > + movl %eax,%r10d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r10d > + addl %r12d,%ecx > + addl %r12d,%r10d > + > + leaq 4(%rbp),%rbp > + movl 44(%rsp),%r13d > + movl 32(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r10d > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 12(%rsp),%r12d > + > + addl 40(%rsp),%r12d > + movl %ecx,%r13d > + addl %r15d,%r12d > + movl %r10d,%r14d > + rorl $14,%r13d > + movl %edx,%r15d > + > + xorl %ecx,%r13d > + rorl $9,%r14d > + xorl %r8d,%r15d > + > + movl %r12d,40(%rsp) > + xorl %r10d,%r14d > + andl %ecx,%r15d > + > + rorl $5,%r13d > + addl %r9d,%r12d > + xorl %r8d,%r15d > + > + rorl $11,%r14d > + xorl %ecx,%r13d > + addl %r15d,%r12d > + > + movl %r10d,%r15d > + addl (%rbp),%r12d > + xorl %r10d,%r14d > + > + xorl %r11d,%r15d > + rorl $6,%r13d > + movl %r11d,%r9d > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%r9d > + addl %r12d,%ebx > + addl %r12d,%r9d > + > + leaq 4(%rbp),%rbp > + movl 48(%rsp),%r13d > + movl 36(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r9d > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 16(%rsp),%r12d > + > + addl 44(%rsp),%r12d > + movl %ebx,%r13d > + addl %edi,%r12d > + movl %r9d,%r14d > + rorl $14,%r13d > + movl %ecx,%edi > + > + xorl %ebx,%r13d > + rorl $9,%r14d > + xorl %edx,%edi > + > + movl %r12d,44(%rsp) > + xorl %r9d,%r14d > + andl %ebx,%edi > + > + rorl $5,%r13d > + addl %r8d,%r12d > + xorl %edx,%edi > + > + rorl $11,%r14d > + xorl %ebx,%r13d > + addl %edi,%r12d > + > + movl %r9d,%edi > + addl (%rbp),%r12d > + xorl %r9d,%r14d > + > + xorl %r10d,%edi > + rorl $6,%r13d > + movl %r10d,%r8d > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%r8d > + addl %r12d,%eax > + addl %r12d,%r8d > + > + leaq 20(%rbp),%rbp > + movl 52(%rsp),%r13d > + movl 40(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%r8d > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 20(%rsp),%r12d > + > + addl 48(%rsp),%r12d > + movl %eax,%r13d > + addl %r15d,%r12d > + movl %r8d,%r14d > + rorl $14,%r13d > + movl %ebx,%r15d > + > + xorl %eax,%r13d > + rorl $9,%r14d > + xorl %ecx,%r15d > + > + movl %r12d,48(%rsp) > + xorl %r8d,%r14d > + andl %eax,%r15d > + > + rorl $5,%r13d > + addl %edx,%r12d > + xorl %ecx,%r15d > + > + rorl $11,%r14d > + xorl %eax,%r13d > + addl %r15d,%r12d > + > + movl %r8d,%r15d > + addl (%rbp),%r12d > + xorl %r8d,%r14d > + > + xorl %r9d,%r15d > + rorl $6,%r13d > + movl %r9d,%edx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%edx > + addl %r12d,%r11d > + addl %r12d,%edx > + > + leaq 4(%rbp),%rbp > + movl 56(%rsp),%r13d > + movl 44(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%edx > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 24(%rsp),%r12d > + > + addl 52(%rsp),%r12d > + movl %r11d,%r13d > + addl %edi,%r12d > + movl %edx,%r14d > + rorl $14,%r13d > + movl %eax,%edi > + > + xorl %r11d,%r13d > + rorl $9,%r14d > + xorl %ebx,%edi > + > + movl %r12d,52(%rsp) > + xorl %edx,%r14d > + andl %r11d,%edi > + > + rorl $5,%r13d > + addl %ecx,%r12d > + xorl %ebx,%edi > + > + rorl $11,%r14d > + xorl %r11d,%r13d > + addl %edi,%r12d > + > + movl %edx,%edi > + addl (%rbp),%r12d > + xorl %edx,%r14d > + > + xorl %r8d,%edi > + rorl $6,%r13d > + movl %r8d,%ecx > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%ecx > + addl %r12d,%r10d > + addl %r12d,%ecx > + > + leaq 4(%rbp),%rbp > + movl 60(%rsp),%r13d > + movl 48(%rsp),%r15d > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%ecx > + movl %r15d,%r14d > + rorl $2,%r15d > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%r15d > + shrl $10,%r14d > + > + rorl $17,%r15d > + xorl %r13d,%r12d > + xorl %r14d,%r15d > + addl 28(%rsp),%r12d > + > + addl 56(%rsp),%r12d > + movl %r10d,%r13d > + addl %r15d,%r12d > + movl %ecx,%r14d > + rorl $14,%r13d > + movl %r11d,%r15d > + > + xorl %r10d,%r13d > + rorl $9,%r14d > + xorl %eax,%r15d > + > + movl %r12d,56(%rsp) > + xorl %ecx,%r14d > + andl %r10d,%r15d > + > + rorl $5,%r13d > + addl %ebx,%r12d > + xorl %eax,%r15d > + > + rorl $11,%r14d > + xorl %r10d,%r13d > + addl %r15d,%r12d > + > + movl %ecx,%r15d > + addl (%rbp),%r12d > + xorl %ecx,%r14d > + > + xorl %edx,%r15d > + rorl $6,%r13d > + movl %edx,%ebx > + > + andl %r15d,%edi > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %edi,%ebx > + addl %r12d,%r9d > + addl %r12d,%ebx > + > + leaq 4(%rbp),%rbp > + movl 0(%rsp),%r13d > + movl 52(%rsp),%edi > + > + movl %r13d,%r12d > + rorl $11,%r13d > + addl %r14d,%ebx > + movl %edi,%r14d > + rorl $2,%edi > + > + xorl %r12d,%r13d > + shrl $3,%r12d > + rorl $7,%r13d > + xorl %r14d,%edi > + shrl $10,%r14d > + > + rorl $17,%edi > + xorl %r13d,%r12d > + xorl %r14d,%edi > + addl 32(%rsp),%r12d > + > + addl 60(%rsp),%r12d > + movl %r9d,%r13d > + addl %edi,%r12d > + movl %ebx,%r14d > + rorl $14,%r13d > + movl %r10d,%edi > + > + xorl %r9d,%r13d > + rorl $9,%r14d > + xorl %r11d,%edi > + > + movl %r12d,60(%rsp) > + xorl %ebx,%r14d > + andl %r9d,%edi > + > + rorl $5,%r13d > + addl %eax,%r12d > + xorl %r11d,%edi > + > + rorl $11,%r14d > + xorl %r9d,%r13d > + addl %edi,%r12d > + > + movl %ebx,%edi > + addl (%rbp),%r12d > + xorl %ebx,%r14d > + > + xorl %ecx,%edi > + rorl $6,%r13d > + movl %ecx,%eax > + > + andl %edi,%r15d > + rorl $2,%r14d > + addl %r13d,%r12d > + > + xorl %r15d,%eax > + addl %r12d,%r8d > + addl %r12d,%eax > + > + leaq 20(%rbp),%rbp > + cmpb $0,3(%rbp) > + jnz .Lrounds_16_xx > + > + movq 64+0(%rsp),%rdi > + addl %r14d,%eax > + leaq 64(%rsi),%rsi > + > + addl 0(%rdi),%eax > + addl 4(%rdi),%ebx > + addl 8(%rdi),%ecx > + addl 12(%rdi),%edx > + addl 16(%rdi),%r8d > + addl 20(%rdi),%r9d > + addl 24(%rdi),%r10d > + addl 28(%rdi),%r11d > + > + cmpq 64+16(%rsp),%rsi > + > + movl %eax,0(%rdi) > + movl %ebx,4(%rdi) > + movl %ecx,8(%rdi) > + movl %edx,12(%rdi) > + movl %r8d,16(%rdi) > + movl %r9d,20(%rdi) > + movl %r10d,24(%rdi) > + movl %r11d,28(%rdi) > + jb .Lloop > + > + movq 88(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -48(%rsi),%r15 > +.cfi_restore %r15 > + movq -40(%rsi),%r14 > +.cfi_restore %r14 > + movq -32(%rsi),%r13 > +.cfi_restore %r13 > + movq -24(%rsi),%r12 > +.cfi_restore %r12 > + movq -16(%rsi),%rbp > +.cfi_restore %rbp > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq (%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha256_block_data_order,.-sha256_block_data_order > +.align 64 > +.type K256,@object > +K256: > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 > + > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f > +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff > +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff > +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 > +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 > +.byte > 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,= 1 > 09,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,= 83, > 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,= 1 > 14,103,62,0 > +.type sha256_block_data_order_shaext,@function > +.align 64 > +sha256_block_data_order_shaext: > +_shaext_shortcut: > +.cfi_startproc > + leaq K256+128(%rip),%rcx > + movdqu (%rdi),%xmm1 > + movdqu 16(%rdi),%xmm2 > + movdqa 512-128(%rcx),%xmm7 > + > + pshufd $0x1b,%xmm1,%xmm0 > + pshufd $0xb1,%xmm1,%xmm1 > + pshufd $0x1b,%xmm2,%xmm2 > + movdqa %xmm7,%xmm8 > +.byte 102,15,58,15,202,8 > + punpcklqdq %xmm0,%xmm2 > + jmp .Loop_shaext > + > +.align 16 > +.Loop_shaext: > + movdqu (%rsi),%xmm3 > + movdqu 16(%rsi),%xmm4 > + movdqu 32(%rsi),%xmm5 > +.byte 102,15,56,0,223 > + movdqu 48(%rsi),%xmm6 > + > + movdqa 0-128(%rcx),%xmm0 > + paddd %xmm3,%xmm0 > +.byte 102,15,56,0,231 > + movdqa %xmm2,%xmm10 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + nop > + movdqa %xmm1,%xmm9 > +.byte 15,56,203,202 > + > + movdqa 32-128(%rcx),%xmm0 > + paddd %xmm4,%xmm0 > +.byte 102,15,56,0,239 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + leaq 64(%rsi),%rsi > +.byte 15,56,204,220 > +.byte 15,56,203,202 > + > + movdqa 64-128(%rcx),%xmm0 > + paddd %xmm5,%xmm0 > +.byte 102,15,56,0,247 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm6,%xmm7 > +.byte 102,15,58,15,253,4 > + nop > + paddd %xmm7,%xmm3 > +.byte 15,56,204,229 > +.byte 15,56,203,202 > + > + movdqa 96-128(%rcx),%xmm0 > + paddd %xmm6,%xmm0 > +.byte 15,56,205,222 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm3,%xmm7 > +.byte 102,15,58,15,254,4 > + nop > + paddd %xmm7,%xmm4 > +.byte 15,56,204,238 > +.byte 15,56,203,202 > + movdqa 128-128(%rcx),%xmm0 > + paddd %xmm3,%xmm0 > +.byte 15,56,205,227 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm4,%xmm7 > +.byte 102,15,58,15,251,4 > + nop > + paddd %xmm7,%xmm5 > +.byte 15,56,204,243 > +.byte 15,56,203,202 > + movdqa 160-128(%rcx),%xmm0 > + paddd %xmm4,%xmm0 > +.byte 15,56,205,236 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm5,%xmm7 > +.byte 102,15,58,15,252,4 > + nop > + paddd %xmm7,%xmm6 > +.byte 15,56,204,220 > +.byte 15,56,203,202 > + movdqa 192-128(%rcx),%xmm0 > + paddd %xmm5,%xmm0 > +.byte 15,56,205,245 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm6,%xmm7 > +.byte 102,15,58,15,253,4 > + nop > + paddd %xmm7,%xmm3 > +.byte 15,56,204,229 > +.byte 15,56,203,202 > + movdqa 224-128(%rcx),%xmm0 > + paddd %xmm6,%xmm0 > +.byte 15,56,205,222 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm3,%xmm7 > +.byte 102,15,58,15,254,4 > + nop > + paddd %xmm7,%xmm4 > +.byte 15,56,204,238 > +.byte 15,56,203,202 > + movdqa 256-128(%rcx),%xmm0 > + paddd %xmm3,%xmm0 > +.byte 15,56,205,227 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm4,%xmm7 > +.byte 102,15,58,15,251,4 > + nop > + paddd %xmm7,%xmm5 > +.byte 15,56,204,243 > +.byte 15,56,203,202 > + movdqa 288-128(%rcx),%xmm0 > + paddd %xmm4,%xmm0 > +.byte 15,56,205,236 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm5,%xmm7 > +.byte 102,15,58,15,252,4 > + nop > + paddd %xmm7,%xmm6 > +.byte 15,56,204,220 > +.byte 15,56,203,202 > + movdqa 320-128(%rcx),%xmm0 > + paddd %xmm5,%xmm0 > +.byte 15,56,205,245 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm6,%xmm7 > +.byte 102,15,58,15,253,4 > + nop > + paddd %xmm7,%xmm3 > +.byte 15,56,204,229 > +.byte 15,56,203,202 > + movdqa 352-128(%rcx),%xmm0 > + paddd %xmm6,%xmm0 > +.byte 15,56,205,222 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm3,%xmm7 > +.byte 102,15,58,15,254,4 > + nop > + paddd %xmm7,%xmm4 > +.byte 15,56,204,238 > +.byte 15,56,203,202 > + movdqa 384-128(%rcx),%xmm0 > + paddd %xmm3,%xmm0 > +.byte 15,56,205,227 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm4,%xmm7 > +.byte 102,15,58,15,251,4 > + nop > + paddd %xmm7,%xmm5 > +.byte 15,56,204,243 > +.byte 15,56,203,202 > + movdqa 416-128(%rcx),%xmm0 > + paddd %xmm4,%xmm0 > +.byte 15,56,205,236 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + movdqa %xmm5,%xmm7 > +.byte 102,15,58,15,252,4 > +.byte 15,56,203,202 > + paddd %xmm7,%xmm6 > + > + movdqa 448-128(%rcx),%xmm0 > + paddd %xmm5,%xmm0 > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > +.byte 15,56,205,245 > + movdqa %xmm8,%xmm7 > +.byte 15,56,203,202 > + > + movdqa 480-128(%rcx),%xmm0 > + paddd %xmm6,%xmm0 > + nop > +.byte 15,56,203,209 > + pshufd $0x0e,%xmm0,%xmm0 > + decq %rdx > + nop > +.byte 15,56,203,202 > + > + paddd %xmm10,%xmm2 > + paddd %xmm9,%xmm1 > + jnz .Loop_shaext > + > + pshufd $0xb1,%xmm2,%xmm2 > + pshufd $0x1b,%xmm1,%xmm7 > + pshufd $0xb1,%xmm1,%xmm1 > + punpckhqdq %xmm2,%xmm1 > +.byte 102,15,58,15,215,8 > + > + movdqu %xmm1,(%rdi) > + movdqu %xmm2,16(%rdi) > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext > +.type sha256_block_data_order_ssse3,@function > +.align 64 > +sha256_block_data_order_ssse3: > +.cfi_startproc > +.Lssse3_shortcut: > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_offset %r15,-56 > + shlq $4,%rdx > + subq $96,%rsp > + leaq (%rsi,%rdx,4),%rdx > + andq $-64,%rsp > + movq %rdi,64+0(%rsp) > + movq %rsi,64+8(%rsp) > + movq %rdx,64+16(%rsp) > + movq %rax,88(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 > +.Lprologue_ssse3: > + > + movl 0(%rdi),%eax > + movl 4(%rdi),%ebx > + movl 8(%rdi),%ecx > + movl 12(%rdi),%edx > + movl 16(%rdi),%r8d > + movl 20(%rdi),%r9d > + movl 24(%rdi),%r10d > + movl 28(%rdi),%r11d > + > + > + jmp .Lloop_ssse3 > +.align 16 > +.Lloop_ssse3: > + movdqa K256+512(%rip),%xmm7 > + movdqu 0(%rsi),%xmm0 > + movdqu 16(%rsi),%xmm1 > + movdqu 32(%rsi),%xmm2 > +.byte 102,15,56,0,199 > + movdqu 48(%rsi),%xmm3 > + leaq K256(%rip),%rbp > +.byte 102,15,56,0,207 > + movdqa 0(%rbp),%xmm4 > + movdqa 32(%rbp),%xmm5 > +.byte 102,15,56,0,215 > + paddd %xmm0,%xmm4 > + movdqa 64(%rbp),%xmm6 > +.byte 102,15,56,0,223 > + movdqa 96(%rbp),%xmm7 > + paddd %xmm1,%xmm5 > + paddd %xmm2,%xmm6 > + paddd %xmm3,%xmm7 > + movdqa %xmm4,0(%rsp) > + movl %eax,%r14d > + movdqa %xmm5,16(%rsp) > + movl %ebx,%edi > + movdqa %xmm6,32(%rsp) > + xorl %ecx,%edi > + movdqa %xmm7,48(%rsp) > + movl %r8d,%r13d > + jmp .Lssse3_00_47 > + > +.align 16 > +.Lssse3_00_47: > + subq $-128,%rbp > + rorl $14,%r13d > + movdqa %xmm1,%xmm4 > + movl %r14d,%eax > + movl %r9d,%r12d > + movdqa %xmm3,%xmm7 > + rorl $9,%r14d > + xorl %r8d,%r13d > + xorl %r10d,%r12d > + rorl $5,%r13d > + xorl %eax,%r14d > +.byte 102,15,58,15,224,4 > + andl %r8d,%r12d > + xorl %r8d,%r13d > +.byte 102,15,58,15,250,4 > + addl 0(%rsp),%r11d > + movl %eax,%r15d > + xorl %r10d,%r12d > + rorl $11,%r14d > + movdqa %xmm4,%xmm5 > + xorl %ebx,%r15d > + addl %r12d,%r11d > + movdqa %xmm4,%xmm6 > + rorl $6,%r13d > + andl %r15d,%edi > + psrld $3,%xmm4 > + xorl %eax,%r14d > + addl %r13d,%r11d > + xorl %ebx,%edi > + paddd %xmm7,%xmm0 > + rorl $2,%r14d > + addl %r11d,%edx > + psrld $7,%xmm6 > + addl %edi,%r11d > + movl %edx,%r13d > + pshufd $250,%xmm3,%xmm7 > + addl %r11d,%r14d > + rorl $14,%r13d > + pslld $14,%xmm5 > + movl %r14d,%r11d > + movl %r8d,%r12d > + pxor %xmm6,%xmm4 > + rorl $9,%r14d > + xorl %edx,%r13d > + xorl %r9d,%r12d > + rorl $5,%r13d > + psrld $11,%xmm6 > + xorl %r11d,%r14d > + pxor %xmm5,%xmm4 > + andl %edx,%r12d > + xorl %edx,%r13d > + pslld $11,%xmm5 > + addl 4(%rsp),%r10d > + movl %r11d,%edi > + pxor %xmm6,%xmm4 > + xorl %r9d,%r12d > + rorl $11,%r14d > + movdqa %xmm7,%xmm6 > + xorl %eax,%edi > + addl %r12d,%r10d > + pxor %xmm5,%xmm4 > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r11d,%r14d > + psrld $10,%xmm7 > + addl %r13d,%r10d > + xorl %eax,%r15d > + paddd %xmm4,%xmm0 > + rorl $2,%r14d > + addl %r10d,%ecx > + psrlq $17,%xmm6 > + addl %r15d,%r10d > + movl %ecx,%r13d > + addl %r10d,%r14d > + pxor %xmm6,%xmm7 > + rorl $14,%r13d > + movl %r14d,%r10d > + movl %edx,%r12d > + rorl $9,%r14d > + psrlq $2,%xmm6 > + xorl %ecx,%r13d > + xorl %r8d,%r12d > + pxor %xmm6,%xmm7 > + rorl $5,%r13d > + xorl %r10d,%r14d > + andl %ecx,%r12d > + pshufd $128,%xmm7,%xmm7 > + xorl %ecx,%r13d > + addl 8(%rsp),%r9d > + movl %r10d,%r15d > + psrldq $8,%xmm7 > + xorl %r8d,%r12d > + rorl $11,%r14d > + xorl %r11d,%r15d > + addl %r12d,%r9d > + rorl $6,%r13d > + paddd %xmm7,%xmm0 > + andl %r15d,%edi > + xorl %r10d,%r14d > + addl %r13d,%r9d > + pshufd $80,%xmm0,%xmm7 > + xorl %r11d,%edi > + rorl $2,%r14d > + addl %r9d,%ebx > + movdqa %xmm7,%xmm6 > + addl %edi,%r9d > + movl %ebx,%r13d > + psrld $10,%xmm7 > + addl %r9d,%r14d > + rorl $14,%r13d > + psrlq $17,%xmm6 > + movl %r14d,%r9d > + movl %ecx,%r12d > + pxor %xmm6,%xmm7 > + rorl $9,%r14d > + xorl %ebx,%r13d > + xorl %edx,%r12d > + rorl $5,%r13d > + xorl %r9d,%r14d > + psrlq $2,%xmm6 > + andl %ebx,%r12d > + xorl %ebx,%r13d > + addl 12(%rsp),%r8d > + pxor %xmm6,%xmm7 > + movl %r9d,%edi > + xorl %edx,%r12d > + rorl $11,%r14d > + pshufd $8,%xmm7,%xmm7 > + xorl %r10d,%edi > + addl %r12d,%r8d > + movdqa 0(%rbp),%xmm6 > + rorl $6,%r13d > + andl %edi,%r15d > + pslldq $8,%xmm7 > + xorl %r9d,%r14d > + addl %r13d,%r8d > + xorl %r10d,%r15d > + paddd %xmm7,%xmm0 > + rorl $2,%r14d > + addl %r8d,%eax > + addl %r15d,%r8d > + paddd %xmm0,%xmm6 > + movl %eax,%r13d > + addl %r8d,%r14d > + movdqa %xmm6,0(%rsp) > + rorl $14,%r13d > + movdqa %xmm2,%xmm4 > + movl %r14d,%r8d > + movl %ebx,%r12d > + movdqa %xmm0,%xmm7 > + rorl $9,%r14d > + xorl %eax,%r13d > + xorl %ecx,%r12d > + rorl $5,%r13d > + xorl %r8d,%r14d > +.byte 102,15,58,15,225,4 > + andl %eax,%r12d > + xorl %eax,%r13d > +.byte 102,15,58,15,251,4 > + addl 16(%rsp),%edx > + movl %r8d,%r15d > + xorl %ecx,%r12d > + rorl $11,%r14d > + movdqa %xmm4,%xmm5 > + xorl %r9d,%r15d > + addl %r12d,%edx > + movdqa %xmm4,%xmm6 > + rorl $6,%r13d > + andl %r15d,%edi > + psrld $3,%xmm4 > + xorl %r8d,%r14d > + addl %r13d,%edx > + xorl %r9d,%edi > + paddd %xmm7,%xmm1 > + rorl $2,%r14d > + addl %edx,%r11d > + psrld $7,%xmm6 > + addl %edi,%edx > + movl %r11d,%r13d > + pshufd $250,%xmm0,%xmm7 > + addl %edx,%r14d > + rorl $14,%r13d > + pslld $14,%xmm5 > + movl %r14d,%edx > + movl %eax,%r12d > + pxor %xmm6,%xmm4 > + rorl $9,%r14d > + xorl %r11d,%r13d > + xorl %ebx,%r12d > + rorl $5,%r13d > + psrld $11,%xmm6 > + xorl %edx,%r14d > + pxor %xmm5,%xmm4 > + andl %r11d,%r12d > + xorl %r11d,%r13d > + pslld $11,%xmm5 > + addl 20(%rsp),%ecx > + movl %edx,%edi > + pxor %xmm6,%xmm4 > + xorl %ebx,%r12d > + rorl $11,%r14d > + movdqa %xmm7,%xmm6 > + xorl %r8d,%edi > + addl %r12d,%ecx > + pxor %xmm5,%xmm4 > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %edx,%r14d > + psrld $10,%xmm7 > + addl %r13d,%ecx > + xorl %r8d,%r15d > + paddd %xmm4,%xmm1 > + rorl $2,%r14d > + addl %ecx,%r10d > + psrlq $17,%xmm6 > + addl %r15d,%ecx > + movl %r10d,%r13d > + addl %ecx,%r14d > + pxor %xmm6,%xmm7 > + rorl $14,%r13d > + movl %r14d,%ecx > + movl %r11d,%r12d > + rorl $9,%r14d > + psrlq $2,%xmm6 > + xorl %r10d,%r13d > + xorl %eax,%r12d > + pxor %xmm6,%xmm7 > + rorl $5,%r13d > + xorl %ecx,%r14d > + andl %r10d,%r12d > + pshufd $128,%xmm7,%xmm7 > + xorl %r10d,%r13d > + addl 24(%rsp),%ebx > + movl %ecx,%r15d > + psrldq $8,%xmm7 > + xorl %eax,%r12d > + rorl $11,%r14d > + xorl %edx,%r15d > + addl %r12d,%ebx > + rorl $6,%r13d > + paddd %xmm7,%xmm1 > + andl %r15d,%edi > + xorl %ecx,%r14d > + addl %r13d,%ebx > + pshufd $80,%xmm1,%xmm7 > + xorl %edx,%edi > + rorl $2,%r14d > + addl %ebx,%r9d > + movdqa %xmm7,%xmm6 > + addl %edi,%ebx > + movl %r9d,%r13d > + psrld $10,%xmm7 > + addl %ebx,%r14d > + rorl $14,%r13d > + psrlq $17,%xmm6 > + movl %r14d,%ebx > + movl %r10d,%r12d > + pxor %xmm6,%xmm7 > + rorl $9,%r14d > + xorl %r9d,%r13d > + xorl %r11d,%r12d > + rorl $5,%r13d > + xorl %ebx,%r14d > + psrlq $2,%xmm6 > + andl %r9d,%r12d > + xorl %r9d,%r13d > + addl 28(%rsp),%eax > + pxor %xmm6,%xmm7 > + movl %ebx,%edi > + xorl %r11d,%r12d > + rorl $11,%r14d > + pshufd $8,%xmm7,%xmm7 > + xorl %ecx,%edi > + addl %r12d,%eax > + movdqa 32(%rbp),%xmm6 > + rorl $6,%r13d > + andl %edi,%r15d > + pslldq $8,%xmm7 > + xorl %ebx,%r14d > + addl %r13d,%eax > + xorl %ecx,%r15d > + paddd %xmm7,%xmm1 > + rorl $2,%r14d > + addl %eax,%r8d > + addl %r15d,%eax > + paddd %xmm1,%xmm6 > + movl %r8d,%r13d > + addl %eax,%r14d > + movdqa %xmm6,16(%rsp) > + rorl $14,%r13d > + movdqa %xmm3,%xmm4 > + movl %r14d,%eax > + movl %r9d,%r12d > + movdqa %xmm1,%xmm7 > + rorl $9,%r14d > + xorl %r8d,%r13d > + xorl %r10d,%r12d > + rorl $5,%r13d > + xorl %eax,%r14d > +.byte 102,15,58,15,226,4 > + andl %r8d,%r12d > + xorl %r8d,%r13d > +.byte 102,15,58,15,248,4 > + addl 32(%rsp),%r11d > + movl %eax,%r15d > + xorl %r10d,%r12d > + rorl $11,%r14d > + movdqa %xmm4,%xmm5 > + xorl %ebx,%r15d > + addl %r12d,%r11d > + movdqa %xmm4,%xmm6 > + rorl $6,%r13d > + andl %r15d,%edi > + psrld $3,%xmm4 > + xorl %eax,%r14d > + addl %r13d,%r11d > + xorl %ebx,%edi > + paddd %xmm7,%xmm2 > + rorl $2,%r14d > + addl %r11d,%edx > + psrld $7,%xmm6 > + addl %edi,%r11d > + movl %edx,%r13d > + pshufd $250,%xmm1,%xmm7 > + addl %r11d,%r14d > + rorl $14,%r13d > + pslld $14,%xmm5 > + movl %r14d,%r11d > + movl %r8d,%r12d > + pxor %xmm6,%xmm4 > + rorl $9,%r14d > + xorl %edx,%r13d > + xorl %r9d,%r12d > + rorl $5,%r13d > + psrld $11,%xmm6 > + xorl %r11d,%r14d > + pxor %xmm5,%xmm4 > + andl %edx,%r12d > + xorl %edx,%r13d > + pslld $11,%xmm5 > + addl 36(%rsp),%r10d > + movl %r11d,%edi > + pxor %xmm6,%xmm4 > + xorl %r9d,%r12d > + rorl $11,%r14d > + movdqa %xmm7,%xmm6 > + xorl %eax,%edi > + addl %r12d,%r10d > + pxor %xmm5,%xmm4 > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r11d,%r14d > + psrld $10,%xmm7 > + addl %r13d,%r10d > + xorl %eax,%r15d > + paddd %xmm4,%xmm2 > + rorl $2,%r14d > + addl %r10d,%ecx > + psrlq $17,%xmm6 > + addl %r15d,%r10d > + movl %ecx,%r13d > + addl %r10d,%r14d > + pxor %xmm6,%xmm7 > + rorl $14,%r13d > + movl %r14d,%r10d > + movl %edx,%r12d > + rorl $9,%r14d > + psrlq $2,%xmm6 > + xorl %ecx,%r13d > + xorl %r8d,%r12d > + pxor %xmm6,%xmm7 > + rorl $5,%r13d > + xorl %r10d,%r14d > + andl %ecx,%r12d > + pshufd $128,%xmm7,%xmm7 > + xorl %ecx,%r13d > + addl 40(%rsp),%r9d > + movl %r10d,%r15d > + psrldq $8,%xmm7 > + xorl %r8d,%r12d > + rorl $11,%r14d > + xorl %r11d,%r15d > + addl %r12d,%r9d > + rorl $6,%r13d > + paddd %xmm7,%xmm2 > + andl %r15d,%edi > + xorl %r10d,%r14d > + addl %r13d,%r9d > + pshufd $80,%xmm2,%xmm7 > + xorl %r11d,%edi > + rorl $2,%r14d > + addl %r9d,%ebx > + movdqa %xmm7,%xmm6 > + addl %edi,%r9d > + movl %ebx,%r13d > + psrld $10,%xmm7 > + addl %r9d,%r14d > + rorl $14,%r13d > + psrlq $17,%xmm6 > + movl %r14d,%r9d > + movl %ecx,%r12d > + pxor %xmm6,%xmm7 > + rorl $9,%r14d > + xorl %ebx,%r13d > + xorl %edx,%r12d > + rorl $5,%r13d > + xorl %r9d,%r14d > + psrlq $2,%xmm6 > + andl %ebx,%r12d > + xorl %ebx,%r13d > + addl 44(%rsp),%r8d > + pxor %xmm6,%xmm7 > + movl %r9d,%edi > + xorl %edx,%r12d > + rorl $11,%r14d > + pshufd $8,%xmm7,%xmm7 > + xorl %r10d,%edi > + addl %r12d,%r8d > + movdqa 64(%rbp),%xmm6 > + rorl $6,%r13d > + andl %edi,%r15d > + pslldq $8,%xmm7 > + xorl %r9d,%r14d > + addl %r13d,%r8d > + xorl %r10d,%r15d > + paddd %xmm7,%xmm2 > + rorl $2,%r14d > + addl %r8d,%eax > + addl %r15d,%r8d > + paddd %xmm2,%xmm6 > + movl %eax,%r13d > + addl %r8d,%r14d > + movdqa %xmm6,32(%rsp) > + rorl $14,%r13d > + movdqa %xmm0,%xmm4 > + movl %r14d,%r8d > + movl %ebx,%r12d > + movdqa %xmm2,%xmm7 > + rorl $9,%r14d > + xorl %eax,%r13d > + xorl %ecx,%r12d > + rorl $5,%r13d > + xorl %r8d,%r14d > +.byte 102,15,58,15,227,4 > + andl %eax,%r12d > + xorl %eax,%r13d > +.byte 102,15,58,15,249,4 > + addl 48(%rsp),%edx > + movl %r8d,%r15d > + xorl %ecx,%r12d > + rorl $11,%r14d > + movdqa %xmm4,%xmm5 > + xorl %r9d,%r15d > + addl %r12d,%edx > + movdqa %xmm4,%xmm6 > + rorl $6,%r13d > + andl %r15d,%edi > + psrld $3,%xmm4 > + xorl %r8d,%r14d > + addl %r13d,%edx > + xorl %r9d,%edi > + paddd %xmm7,%xmm3 > + rorl $2,%r14d > + addl %edx,%r11d > + psrld $7,%xmm6 > + addl %edi,%edx > + movl %r11d,%r13d > + pshufd $250,%xmm2,%xmm7 > + addl %edx,%r14d > + rorl $14,%r13d > + pslld $14,%xmm5 > + movl %r14d,%edx > + movl %eax,%r12d > + pxor %xmm6,%xmm4 > + rorl $9,%r14d > + xorl %r11d,%r13d > + xorl %ebx,%r12d > + rorl $5,%r13d > + psrld $11,%xmm6 > + xorl %edx,%r14d > + pxor %xmm5,%xmm4 > + andl %r11d,%r12d > + xorl %r11d,%r13d > + pslld $11,%xmm5 > + addl 52(%rsp),%ecx > + movl %edx,%edi > + pxor %xmm6,%xmm4 > + xorl %ebx,%r12d > + rorl $11,%r14d > + movdqa %xmm7,%xmm6 > + xorl %r8d,%edi > + addl %r12d,%ecx > + pxor %xmm5,%xmm4 > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %edx,%r14d > + psrld $10,%xmm7 > + addl %r13d,%ecx > + xorl %r8d,%r15d > + paddd %xmm4,%xmm3 > + rorl $2,%r14d > + addl %ecx,%r10d > + psrlq $17,%xmm6 > + addl %r15d,%ecx > + movl %r10d,%r13d > + addl %ecx,%r14d > + pxor %xmm6,%xmm7 > + rorl $14,%r13d > + movl %r14d,%ecx > + movl %r11d,%r12d > + rorl $9,%r14d > + psrlq $2,%xmm6 > + xorl %r10d,%r13d > + xorl %eax,%r12d > + pxor %xmm6,%xmm7 > + rorl $5,%r13d > + xorl %ecx,%r14d > + andl %r10d,%r12d > + pshufd $128,%xmm7,%xmm7 > + xorl %r10d,%r13d > + addl 56(%rsp),%ebx > + movl %ecx,%r15d > + psrldq $8,%xmm7 > + xorl %eax,%r12d > + rorl $11,%r14d > + xorl %edx,%r15d > + addl %r12d,%ebx > + rorl $6,%r13d > + paddd %xmm7,%xmm3 > + andl %r15d,%edi > + xorl %ecx,%r14d > + addl %r13d,%ebx > + pshufd $80,%xmm3,%xmm7 > + xorl %edx,%edi > + rorl $2,%r14d > + addl %ebx,%r9d > + movdqa %xmm7,%xmm6 > + addl %edi,%ebx > + movl %r9d,%r13d > + psrld $10,%xmm7 > + addl %ebx,%r14d > + rorl $14,%r13d > + psrlq $17,%xmm6 > + movl %r14d,%ebx > + movl %r10d,%r12d > + pxor %xmm6,%xmm7 > + rorl $9,%r14d > + xorl %r9d,%r13d > + xorl %r11d,%r12d > + rorl $5,%r13d > + xorl %ebx,%r14d > + psrlq $2,%xmm6 > + andl %r9d,%r12d > + xorl %r9d,%r13d > + addl 60(%rsp),%eax > + pxor %xmm6,%xmm7 > + movl %ebx,%edi > + xorl %r11d,%r12d > + rorl $11,%r14d > + pshufd $8,%xmm7,%xmm7 > + xorl %ecx,%edi > + addl %r12d,%eax > + movdqa 96(%rbp),%xmm6 > + rorl $6,%r13d > + andl %edi,%r15d > + pslldq $8,%xmm7 > + xorl %ebx,%r14d > + addl %r13d,%eax > + xorl %ecx,%r15d > + paddd %xmm7,%xmm3 > + rorl $2,%r14d > + addl %eax,%r8d > + addl %r15d,%eax > + paddd %xmm3,%xmm6 > + movl %r8d,%r13d > + addl %eax,%r14d > + movdqa %xmm6,48(%rsp) > + cmpb $0,131(%rbp) > + jne .Lssse3_00_47 > + rorl $14,%r13d > + movl %r14d,%eax > + movl %r9d,%r12d > + rorl $9,%r14d > + xorl %r8d,%r13d > + xorl %r10d,%r12d > + rorl $5,%r13d > + xorl %eax,%r14d > + andl %r8d,%r12d > + xorl %r8d,%r13d > + addl 0(%rsp),%r11d > + movl %eax,%r15d > + xorl %r10d,%r12d > + rorl $11,%r14d > + xorl %ebx,%r15d > + addl %r12d,%r11d > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %eax,%r14d > + addl %r13d,%r11d > + xorl %ebx,%edi > + rorl $2,%r14d > + addl %r11d,%edx > + addl %edi,%r11d > + movl %edx,%r13d > + addl %r11d,%r14d > + rorl $14,%r13d > + movl %r14d,%r11d > + movl %r8d,%r12d > + rorl $9,%r14d > + xorl %edx,%r13d > + xorl %r9d,%r12d > + rorl $5,%r13d > + xorl %r11d,%r14d > + andl %edx,%r12d > + xorl %edx,%r13d > + addl 4(%rsp),%r10d > + movl %r11d,%edi > + xorl %r9d,%r12d > + rorl $11,%r14d > + xorl %eax,%edi > + addl %r12d,%r10d > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r11d,%r14d > + addl %r13d,%r10d > + xorl %eax,%r15d > + rorl $2,%r14d > + addl %r10d,%ecx > + addl %r15d,%r10d > + movl %ecx,%r13d > + addl %r10d,%r14d > + rorl $14,%r13d > + movl %r14d,%r10d > + movl %edx,%r12d > + rorl $9,%r14d > + xorl %ecx,%r13d > + xorl %r8d,%r12d > + rorl $5,%r13d > + xorl %r10d,%r14d > + andl %ecx,%r12d > + xorl %ecx,%r13d > + addl 8(%rsp),%r9d > + movl %r10d,%r15d > + xorl %r8d,%r12d > + rorl $11,%r14d > + xorl %r11d,%r15d > + addl %r12d,%r9d > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %r10d,%r14d > + addl %r13d,%r9d > + xorl %r11d,%edi > + rorl $2,%r14d > + addl %r9d,%ebx > + addl %edi,%r9d > + movl %ebx,%r13d > + addl %r9d,%r14d > + rorl $14,%r13d > + movl %r14d,%r9d > + movl %ecx,%r12d > + rorl $9,%r14d > + xorl %ebx,%r13d > + xorl %edx,%r12d > + rorl $5,%r13d > + xorl %r9d,%r14d > + andl %ebx,%r12d > + xorl %ebx,%r13d > + addl 12(%rsp),%r8d > + movl %r9d,%edi > + xorl %edx,%r12d > + rorl $11,%r14d > + xorl %r10d,%edi > + addl %r12d,%r8d > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r9d,%r14d > + addl %r13d,%r8d > + xorl %r10d,%r15d > + rorl $2,%r14d > + addl %r8d,%eax > + addl %r15d,%r8d > + movl %eax,%r13d > + addl %r8d,%r14d > + rorl $14,%r13d > + movl %r14d,%r8d > + movl %ebx,%r12d > + rorl $9,%r14d > + xorl %eax,%r13d > + xorl %ecx,%r12d > + rorl $5,%r13d > + xorl %r8d,%r14d > + andl %eax,%r12d > + xorl %eax,%r13d > + addl 16(%rsp),%edx > + movl %r8d,%r15d > + xorl %ecx,%r12d > + rorl $11,%r14d > + xorl %r9d,%r15d > + addl %r12d,%edx > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %r8d,%r14d > + addl %r13d,%edx > + xorl %r9d,%edi > + rorl $2,%r14d > + addl %edx,%r11d > + addl %edi,%edx > + movl %r11d,%r13d > + addl %edx,%r14d > + rorl $14,%r13d > + movl %r14d,%edx > + movl %eax,%r12d > + rorl $9,%r14d > + xorl %r11d,%r13d > + xorl %ebx,%r12d > + rorl $5,%r13d > + xorl %edx,%r14d > + andl %r11d,%r12d > + xorl %r11d,%r13d > + addl 20(%rsp),%ecx > + movl %edx,%edi > + xorl %ebx,%r12d > + rorl $11,%r14d > + xorl %r8d,%edi > + addl %r12d,%ecx > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %edx,%r14d > + addl %r13d,%ecx > + xorl %r8d,%r15d > + rorl $2,%r14d > + addl %ecx,%r10d > + addl %r15d,%ecx > + movl %r10d,%r13d > + addl %ecx,%r14d > + rorl $14,%r13d > + movl %r14d,%ecx > + movl %r11d,%r12d > + rorl $9,%r14d > + xorl %r10d,%r13d > + xorl %eax,%r12d > + rorl $5,%r13d > + xorl %ecx,%r14d > + andl %r10d,%r12d > + xorl %r10d,%r13d > + addl 24(%rsp),%ebx > + movl %ecx,%r15d > + xorl %eax,%r12d > + rorl $11,%r14d > + xorl %edx,%r15d > + addl %r12d,%ebx > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %ecx,%r14d > + addl %r13d,%ebx > + xorl %edx,%edi > + rorl $2,%r14d > + addl %ebx,%r9d > + addl %edi,%ebx > + movl %r9d,%r13d > + addl %ebx,%r14d > + rorl $14,%r13d > + movl %r14d,%ebx > + movl %r10d,%r12d > + rorl $9,%r14d > + xorl %r9d,%r13d > + xorl %r11d,%r12d > + rorl $5,%r13d > + xorl %ebx,%r14d > + andl %r9d,%r12d > + xorl %r9d,%r13d > + addl 28(%rsp),%eax > + movl %ebx,%edi > + xorl %r11d,%r12d > + rorl $11,%r14d > + xorl %ecx,%edi > + addl %r12d,%eax > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %ebx,%r14d > + addl %r13d,%eax > + xorl %ecx,%r15d > + rorl $2,%r14d > + addl %eax,%r8d > + addl %r15d,%eax > + movl %r8d,%r13d > + addl %eax,%r14d > + rorl $14,%r13d > + movl %r14d,%eax > + movl %r9d,%r12d > + rorl $9,%r14d > + xorl %r8d,%r13d > + xorl %r10d,%r12d > + rorl $5,%r13d > + xorl %eax,%r14d > + andl %r8d,%r12d > + xorl %r8d,%r13d > + addl 32(%rsp),%r11d > + movl %eax,%r15d > + xorl %r10d,%r12d > + rorl $11,%r14d > + xorl %ebx,%r15d > + addl %r12d,%r11d > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %eax,%r14d > + addl %r13d,%r11d > + xorl %ebx,%edi > + rorl $2,%r14d > + addl %r11d,%edx > + addl %edi,%r11d > + movl %edx,%r13d > + addl %r11d,%r14d > + rorl $14,%r13d > + movl %r14d,%r11d > + movl %r8d,%r12d > + rorl $9,%r14d > + xorl %edx,%r13d > + xorl %r9d,%r12d > + rorl $5,%r13d > + xorl %r11d,%r14d > + andl %edx,%r12d > + xorl %edx,%r13d > + addl 36(%rsp),%r10d > + movl %r11d,%edi > + xorl %r9d,%r12d > + rorl $11,%r14d > + xorl %eax,%edi > + addl %r12d,%r10d > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r11d,%r14d > + addl %r13d,%r10d > + xorl %eax,%r15d > + rorl $2,%r14d > + addl %r10d,%ecx > + addl %r15d,%r10d > + movl %ecx,%r13d > + addl %r10d,%r14d > + rorl $14,%r13d > + movl %r14d,%r10d > + movl %edx,%r12d > + rorl $9,%r14d > + xorl %ecx,%r13d > + xorl %r8d,%r12d > + rorl $5,%r13d > + xorl %r10d,%r14d > + andl %ecx,%r12d > + xorl %ecx,%r13d > + addl 40(%rsp),%r9d > + movl %r10d,%r15d > + xorl %r8d,%r12d > + rorl $11,%r14d > + xorl %r11d,%r15d > + addl %r12d,%r9d > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %r10d,%r14d > + addl %r13d,%r9d > + xorl %r11d,%edi > + rorl $2,%r14d > + addl %r9d,%ebx > + addl %edi,%r9d > + movl %ebx,%r13d > + addl %r9d,%r14d > + rorl $14,%r13d > + movl %r14d,%r9d > + movl %ecx,%r12d > + rorl $9,%r14d > + xorl %ebx,%r13d > + xorl %edx,%r12d > + rorl $5,%r13d > + xorl %r9d,%r14d > + andl %ebx,%r12d > + xorl %ebx,%r13d > + addl 44(%rsp),%r8d > + movl %r9d,%edi > + xorl %edx,%r12d > + rorl $11,%r14d > + xorl %r10d,%edi > + addl %r12d,%r8d > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %r9d,%r14d > + addl %r13d,%r8d > + xorl %r10d,%r15d > + rorl $2,%r14d > + addl %r8d,%eax > + addl %r15d,%r8d > + movl %eax,%r13d > + addl %r8d,%r14d > + rorl $14,%r13d > + movl %r14d,%r8d > + movl %ebx,%r12d > + rorl $9,%r14d > + xorl %eax,%r13d > + xorl %ecx,%r12d > + rorl $5,%r13d > + xorl %r8d,%r14d > + andl %eax,%r12d > + xorl %eax,%r13d > + addl 48(%rsp),%edx > + movl %r8d,%r15d > + xorl %ecx,%r12d > + rorl $11,%r14d > + xorl %r9d,%r15d > + addl %r12d,%edx > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %r8d,%r14d > + addl %r13d,%edx > + xorl %r9d,%edi > + rorl $2,%r14d > + addl %edx,%r11d > + addl %edi,%edx > + movl %r11d,%r13d > + addl %edx,%r14d > + rorl $14,%r13d > + movl %r14d,%edx > + movl %eax,%r12d > + rorl $9,%r14d > + xorl %r11d,%r13d > + xorl %ebx,%r12d > + rorl $5,%r13d > + xorl %edx,%r14d > + andl %r11d,%r12d > + xorl %r11d,%r13d > + addl 52(%rsp),%ecx > + movl %edx,%edi > + xorl %ebx,%r12d > + rorl $11,%r14d > + xorl %r8d,%edi > + addl %r12d,%ecx > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %edx,%r14d > + addl %r13d,%ecx > + xorl %r8d,%r15d > + rorl $2,%r14d > + addl %ecx,%r10d > + addl %r15d,%ecx > + movl %r10d,%r13d > + addl %ecx,%r14d > + rorl $14,%r13d > + movl %r14d,%ecx > + movl %r11d,%r12d > + rorl $9,%r14d > + xorl %r10d,%r13d > + xorl %eax,%r12d > + rorl $5,%r13d > + xorl %ecx,%r14d > + andl %r10d,%r12d > + xorl %r10d,%r13d > + addl 56(%rsp),%ebx > + movl %ecx,%r15d > + xorl %eax,%r12d > + rorl $11,%r14d > + xorl %edx,%r15d > + addl %r12d,%ebx > + rorl $6,%r13d > + andl %r15d,%edi > + xorl %ecx,%r14d > + addl %r13d,%ebx > + xorl %edx,%edi > + rorl $2,%r14d > + addl %ebx,%r9d > + addl %edi,%ebx > + movl %r9d,%r13d > + addl %ebx,%r14d > + rorl $14,%r13d > + movl %r14d,%ebx > + movl %r10d,%r12d > + rorl $9,%r14d > + xorl %r9d,%r13d > + xorl %r11d,%r12d > + rorl $5,%r13d > + xorl %ebx,%r14d > + andl %r9d,%r12d > + xorl %r9d,%r13d > + addl 60(%rsp),%eax > + movl %ebx,%edi > + xorl %r11d,%r12d > + rorl $11,%r14d > + xorl %ecx,%edi > + addl %r12d,%eax > + rorl $6,%r13d > + andl %edi,%r15d > + xorl %ebx,%r14d > + addl %r13d,%eax > + xorl %ecx,%r15d > + rorl $2,%r14d > + addl %eax,%r8d > + addl %r15d,%eax > + movl %r8d,%r13d > + addl %eax,%r14d > + movq 64+0(%rsp),%rdi > + movl %r14d,%eax > + > + addl 0(%rdi),%eax > + leaq 64(%rsi),%rsi > + addl 4(%rdi),%ebx > + addl 8(%rdi),%ecx > + addl 12(%rdi),%edx > + addl 16(%rdi),%r8d > + addl 20(%rdi),%r9d > + addl 24(%rdi),%r10d > + addl 28(%rdi),%r11d > + > + cmpq 64+16(%rsp),%rsi > + > + movl %eax,0(%rdi) > + movl %ebx,4(%rdi) > + movl %ecx,8(%rdi) > + movl %edx,12(%rdi) > + movl %r8d,16(%rdi) > + movl %r9d,20(%rdi) > + movl %r10d,24(%rdi) > + movl %r11d,28(%rdi) > + jb .Lloop_ssse3 > + > + movq 88(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -48(%rsi),%r15 > +.cfi_restore %r15 > + movq -40(%rsi),%r14 > +.cfi_restore %r14 > + movq -32(%rsi),%r13 > +.cfi_restore %r13 > + movq -24(%rsi),%r12 > +.cfi_restore %r12 > + movq -16(%rsi),%rbp > +.cfi_restore %rbp > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq (%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue_ssse3: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64= .S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S > new file mode 100644 > index 0000000000..11e67e5ba1 > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S > @@ -0,0 +1,1811 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/sha/asm/sha512-x86_64.pl > +# > +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > +.text > + > + > +.globl sha512_block_data_order > +.type sha512_block_data_order,@function > +.align 16 > +sha512_block_data_order: > +.cfi_startproc > + movq %rsp,%rax > +.cfi_def_cfa_register %rax > + pushq %rbx > +.cfi_offset %rbx,-16 > + pushq %rbp > +.cfi_offset %rbp,-24 > + pushq %r12 > +.cfi_offset %r12,-32 > + pushq %r13 > +.cfi_offset %r13,-40 > + pushq %r14 > +.cfi_offset %r14,-48 > + pushq %r15 > +.cfi_offset %r15,-56 > + shlq $4,%rdx > + subq $128+32,%rsp > + leaq (%rsi,%rdx,8),%rdx > + andq $-64,%rsp > + movq %rdi,128+0(%rsp) > + movq %rsi,128+8(%rsp) > + movq %rdx,128+16(%rsp) > + movq %rax,152(%rsp) > +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 > +.Lprologue: > + > + movq 0(%rdi),%rax > + movq 8(%rdi),%rbx > + movq 16(%rdi),%rcx > + movq 24(%rdi),%rdx > + movq 32(%rdi),%r8 > + movq 40(%rdi),%r9 > + movq 48(%rdi),%r10 > + movq 56(%rdi),%r11 > + jmp .Lloop > + > +.align 16 > +.Lloop: > + movq %rbx,%rdi > + leaq K512(%rip),%rbp > + xorq %rcx,%rdi > + movq 0(%rsi),%r12 > + movq %r8,%r13 > + movq %rax,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r9,%r15 > + > + xorq %r8,%r13 > + rorq $5,%r14 > + xorq %r10,%r15 > + > + movq %r12,0(%rsp) > + xorq %rax,%r14 > + andq %r8,%r15 > + > + rorq $4,%r13 > + addq %r11,%r12 > + xorq %r10,%r15 > + > + rorq $6,%r14 > + xorq %r8,%r13 > + addq %r15,%r12 > + > + movq %rax,%r15 > + addq (%rbp),%r12 > + xorq %rax,%r14 > + > + xorq %rbx,%r15 > + rorq $14,%r13 > + movq %rbx,%r11 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r11 > + addq %r12,%rdx > + addq %r12,%r11 > + > + leaq 8(%rbp),%rbp > + addq %r14,%r11 > + movq 8(%rsi),%r12 > + movq %rdx,%r13 > + movq %r11,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r8,%rdi > + > + xorq %rdx,%r13 > + rorq $5,%r14 > + xorq %r9,%rdi > + > + movq %r12,8(%rsp) > + xorq %r11,%r14 > + andq %rdx,%rdi > + > + rorq $4,%r13 > + addq %r10,%r12 > + xorq %r9,%rdi > + > + rorq $6,%r14 > + xorq %rdx,%r13 > + addq %rdi,%r12 > + > + movq %r11,%rdi > + addq (%rbp),%r12 > + xorq %r11,%r14 > + > + xorq %rax,%rdi > + rorq $14,%r13 > + movq %rax,%r10 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r10 > + addq %r12,%rcx > + addq %r12,%r10 > + > + leaq 24(%rbp),%rbp > + addq %r14,%r10 > + movq 16(%rsi),%r12 > + movq %rcx,%r13 > + movq %r10,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rdx,%r15 > + > + xorq %rcx,%r13 > + rorq $5,%r14 > + xorq %r8,%r15 > + > + movq %r12,16(%rsp) > + xorq %r10,%r14 > + andq %rcx,%r15 > + > + rorq $4,%r13 > + addq %r9,%r12 > + xorq %r8,%r15 > + > + rorq $6,%r14 > + xorq %rcx,%r13 > + addq %r15,%r12 > + > + movq %r10,%r15 > + addq (%rbp),%r12 > + xorq %r10,%r14 > + > + xorq %r11,%r15 > + rorq $14,%r13 > + movq %r11,%r9 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r9 > + addq %r12,%rbx > + addq %r12,%r9 > + > + leaq 8(%rbp),%rbp > + addq %r14,%r9 > + movq 24(%rsi),%r12 > + movq %rbx,%r13 > + movq %r9,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rcx,%rdi > + > + xorq %rbx,%r13 > + rorq $5,%r14 > + xorq %rdx,%rdi > + > + movq %r12,24(%rsp) > + xorq %r9,%r14 > + andq %rbx,%rdi > + > + rorq $4,%r13 > + addq %r8,%r12 > + xorq %rdx,%rdi > + > + rorq $6,%r14 > + xorq %rbx,%r13 > + addq %rdi,%r12 > + > + movq %r9,%rdi > + addq (%rbp),%r12 > + xorq %r9,%r14 > + > + xorq %r10,%rdi > + rorq $14,%r13 > + movq %r10,%r8 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r8 > + addq %r12,%rax > + addq %r12,%r8 > + > + leaq 24(%rbp),%rbp > + addq %r14,%r8 > + movq 32(%rsi),%r12 > + movq %rax,%r13 > + movq %r8,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rbx,%r15 > + > + xorq %rax,%r13 > + rorq $5,%r14 > + xorq %rcx,%r15 > + > + movq %r12,32(%rsp) > + xorq %r8,%r14 > + andq %rax,%r15 > + > + rorq $4,%r13 > + addq %rdx,%r12 > + xorq %rcx,%r15 > + > + rorq $6,%r14 > + xorq %rax,%r13 > + addq %r15,%r12 > + > + movq %r8,%r15 > + addq (%rbp),%r12 > + xorq %r8,%r14 > + > + xorq %r9,%r15 > + rorq $14,%r13 > + movq %r9,%rdx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rdx > + addq %r12,%r11 > + addq %r12,%rdx > + > + leaq 8(%rbp),%rbp > + addq %r14,%rdx > + movq 40(%rsi),%r12 > + movq %r11,%r13 > + movq %rdx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rax,%rdi > + > + xorq %r11,%r13 > + rorq $5,%r14 > + xorq %rbx,%rdi > + > + movq %r12,40(%rsp) > + xorq %rdx,%r14 > + andq %r11,%rdi > + > + rorq $4,%r13 > + addq %rcx,%r12 > + xorq %rbx,%rdi > + > + rorq $6,%r14 > + xorq %r11,%r13 > + addq %rdi,%r12 > + > + movq %rdx,%rdi > + addq (%rbp),%r12 > + xorq %rdx,%r14 > + > + xorq %r8,%rdi > + rorq $14,%r13 > + movq %r8,%rcx > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rcx > + addq %r12,%r10 > + addq %r12,%rcx > + > + leaq 24(%rbp),%rbp > + addq %r14,%rcx > + movq 48(%rsi),%r12 > + movq %r10,%r13 > + movq %rcx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r11,%r15 > + > + xorq %r10,%r13 > + rorq $5,%r14 > + xorq %rax,%r15 > + > + movq %r12,48(%rsp) > + xorq %rcx,%r14 > + andq %r10,%r15 > + > + rorq $4,%r13 > + addq %rbx,%r12 > + xorq %rax,%r15 > + > + rorq $6,%r14 > + xorq %r10,%r13 > + addq %r15,%r12 > + > + movq %rcx,%r15 > + addq (%rbp),%r12 > + xorq %rcx,%r14 > + > + xorq %rdx,%r15 > + rorq $14,%r13 > + movq %rdx,%rbx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rbx > + addq %r12,%r9 > + addq %r12,%rbx > + > + leaq 8(%rbp),%rbp > + addq %r14,%rbx > + movq 56(%rsi),%r12 > + movq %r9,%r13 > + movq %rbx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r10,%rdi > + > + xorq %r9,%r13 > + rorq $5,%r14 > + xorq %r11,%rdi > + > + movq %r12,56(%rsp) > + xorq %rbx,%r14 > + andq %r9,%rdi > + > + rorq $4,%r13 > + addq %rax,%r12 > + xorq %r11,%rdi > + > + rorq $6,%r14 > + xorq %r9,%r13 > + addq %rdi,%r12 > + > + movq %rbx,%rdi > + addq (%rbp),%r12 > + xorq %rbx,%r14 > + > + xorq %rcx,%rdi > + rorq $14,%r13 > + movq %rcx,%rax > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rax > + addq %r12,%r8 > + addq %r12,%rax > + > + leaq 24(%rbp),%rbp > + addq %r14,%rax > + movq 64(%rsi),%r12 > + movq %r8,%r13 > + movq %rax,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r9,%r15 > + > + xorq %r8,%r13 > + rorq $5,%r14 > + xorq %r10,%r15 > + > + movq %r12,64(%rsp) > + xorq %rax,%r14 > + andq %r8,%r15 > + > + rorq $4,%r13 > + addq %r11,%r12 > + xorq %r10,%r15 > + > + rorq $6,%r14 > + xorq %r8,%r13 > + addq %r15,%r12 > + > + movq %rax,%r15 > + addq (%rbp),%r12 > + xorq %rax,%r14 > + > + xorq %rbx,%r15 > + rorq $14,%r13 > + movq %rbx,%r11 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r11 > + addq %r12,%rdx > + addq %r12,%r11 > + > + leaq 8(%rbp),%rbp > + addq %r14,%r11 > + movq 72(%rsi),%r12 > + movq %rdx,%r13 > + movq %r11,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r8,%rdi > + > + xorq %rdx,%r13 > + rorq $5,%r14 > + xorq %r9,%rdi > + > + movq %r12,72(%rsp) > + xorq %r11,%r14 > + andq %rdx,%rdi > + > + rorq $4,%r13 > + addq %r10,%r12 > + xorq %r9,%rdi > + > + rorq $6,%r14 > + xorq %rdx,%r13 > + addq %rdi,%r12 > + > + movq %r11,%rdi > + addq (%rbp),%r12 > + xorq %r11,%r14 > + > + xorq %rax,%rdi > + rorq $14,%r13 > + movq %rax,%r10 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r10 > + addq %r12,%rcx > + addq %r12,%r10 > + > + leaq 24(%rbp),%rbp > + addq %r14,%r10 > + movq 80(%rsi),%r12 > + movq %rcx,%r13 > + movq %r10,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rdx,%r15 > + > + xorq %rcx,%r13 > + rorq $5,%r14 > + xorq %r8,%r15 > + > + movq %r12,80(%rsp) > + xorq %r10,%r14 > + andq %rcx,%r15 > + > + rorq $4,%r13 > + addq %r9,%r12 > + xorq %r8,%r15 > + > + rorq $6,%r14 > + xorq %rcx,%r13 > + addq %r15,%r12 > + > + movq %r10,%r15 > + addq (%rbp),%r12 > + xorq %r10,%r14 > + > + xorq %r11,%r15 > + rorq $14,%r13 > + movq %r11,%r9 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r9 > + addq %r12,%rbx > + addq %r12,%r9 > + > + leaq 8(%rbp),%rbp > + addq %r14,%r9 > + movq 88(%rsi),%r12 > + movq %rbx,%r13 > + movq %r9,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rcx,%rdi > + > + xorq %rbx,%r13 > + rorq $5,%r14 > + xorq %rdx,%rdi > + > + movq %r12,88(%rsp) > + xorq %r9,%r14 > + andq %rbx,%rdi > + > + rorq $4,%r13 > + addq %r8,%r12 > + xorq %rdx,%rdi > + > + rorq $6,%r14 > + xorq %rbx,%r13 > + addq %rdi,%r12 > + > + movq %r9,%rdi > + addq (%rbp),%r12 > + xorq %r9,%r14 > + > + xorq %r10,%rdi > + rorq $14,%r13 > + movq %r10,%r8 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r8 > + addq %r12,%rax > + addq %r12,%r8 > + > + leaq 24(%rbp),%rbp > + addq %r14,%r8 > + movq 96(%rsi),%r12 > + movq %rax,%r13 > + movq %r8,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rbx,%r15 > + > + xorq %rax,%r13 > + rorq $5,%r14 > + xorq %rcx,%r15 > + > + movq %r12,96(%rsp) > + xorq %r8,%r14 > + andq %rax,%r15 > + > + rorq $4,%r13 > + addq %rdx,%r12 > + xorq %rcx,%r15 > + > + rorq $6,%r14 > + xorq %rax,%r13 > + addq %r15,%r12 > + > + movq %r8,%r15 > + addq (%rbp),%r12 > + xorq %r8,%r14 > + > + xorq %r9,%r15 > + rorq $14,%r13 > + movq %r9,%rdx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rdx > + addq %r12,%r11 > + addq %r12,%rdx > + > + leaq 8(%rbp),%rbp > + addq %r14,%rdx > + movq 104(%rsi),%r12 > + movq %r11,%r13 > + movq %rdx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %rax,%rdi > + > + xorq %r11,%r13 > + rorq $5,%r14 > + xorq %rbx,%rdi > + > + movq %r12,104(%rsp) > + xorq %rdx,%r14 > + andq %r11,%rdi > + > + rorq $4,%r13 > + addq %rcx,%r12 > + xorq %rbx,%rdi > + > + rorq $6,%r14 > + xorq %r11,%r13 > + addq %rdi,%r12 > + > + movq %rdx,%rdi > + addq (%rbp),%r12 > + xorq %rdx,%r14 > + > + xorq %r8,%rdi > + rorq $14,%r13 > + movq %r8,%rcx > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rcx > + addq %r12,%r10 > + addq %r12,%rcx > + > + leaq 24(%rbp),%rbp > + addq %r14,%rcx > + movq 112(%rsi),%r12 > + movq %r10,%r13 > + movq %rcx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r11,%r15 > + > + xorq %r10,%r13 > + rorq $5,%r14 > + xorq %rax,%r15 > + > + movq %r12,112(%rsp) > + xorq %rcx,%r14 > + andq %r10,%r15 > + > + rorq $4,%r13 > + addq %rbx,%r12 > + xorq %rax,%r15 > + > + rorq $6,%r14 > + xorq %r10,%r13 > + addq %r15,%r12 > + > + movq %rcx,%r15 > + addq (%rbp),%r12 > + xorq %rcx,%r14 > + > + xorq %rdx,%r15 > + rorq $14,%r13 > + movq %rdx,%rbx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rbx > + addq %r12,%r9 > + addq %r12,%rbx > + > + leaq 8(%rbp),%rbp > + addq %r14,%rbx > + movq 120(%rsi),%r12 > + movq %r9,%r13 > + movq %rbx,%r14 > + bswapq %r12 > + rorq $23,%r13 > + movq %r10,%rdi > + > + xorq %r9,%r13 > + rorq $5,%r14 > + xorq %r11,%rdi > + > + movq %r12,120(%rsp) > + xorq %rbx,%r14 > + andq %r9,%rdi > + > + rorq $4,%r13 > + addq %rax,%r12 > + xorq %r11,%rdi > + > + rorq $6,%r14 > + xorq %r9,%r13 > + addq %rdi,%r12 > + > + movq %rbx,%rdi > + addq (%rbp),%r12 > + xorq %rbx,%r14 > + > + xorq %rcx,%rdi > + rorq $14,%r13 > + movq %rcx,%rax > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rax > + addq %r12,%r8 > + addq %r12,%rax > + > + leaq 24(%rbp),%rbp > + jmp .Lrounds_16_xx > +.align 16 > +.Lrounds_16_xx: > + movq 8(%rsp),%r13 > + movq 112(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rax > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 72(%rsp),%r12 > + > + addq 0(%rsp),%r12 > + movq %r8,%r13 > + addq %r15,%r12 > + movq %rax,%r14 > + rorq $23,%r13 > + movq %r9,%r15 > + > + xorq %r8,%r13 > + rorq $5,%r14 > + xorq %r10,%r15 > + > + movq %r12,0(%rsp) > + xorq %rax,%r14 > + andq %r8,%r15 > + > + rorq $4,%r13 > + addq %r11,%r12 > + xorq %r10,%r15 > + > + rorq $6,%r14 > + xorq %r8,%r13 > + addq %r15,%r12 > + > + movq %rax,%r15 > + addq (%rbp),%r12 > + xorq %rax,%r14 > + > + xorq %rbx,%r15 > + rorq $14,%r13 > + movq %rbx,%r11 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r11 > + addq %r12,%rdx > + addq %r12,%r11 > + > + leaq 8(%rbp),%rbp > + movq 16(%rsp),%r13 > + movq 120(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r11 > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 80(%rsp),%r12 > + > + addq 8(%rsp),%r12 > + movq %rdx,%r13 > + addq %rdi,%r12 > + movq %r11,%r14 > + rorq $23,%r13 > + movq %r8,%rdi > + > + xorq %rdx,%r13 > + rorq $5,%r14 > + xorq %r9,%rdi > + > + movq %r12,8(%rsp) > + xorq %r11,%r14 > + andq %rdx,%rdi > + > + rorq $4,%r13 > + addq %r10,%r12 > + xorq %r9,%rdi > + > + rorq $6,%r14 > + xorq %rdx,%r13 > + addq %rdi,%r12 > + > + movq %r11,%rdi > + addq (%rbp),%r12 > + xorq %r11,%r14 > + > + xorq %rax,%rdi > + rorq $14,%r13 > + movq %rax,%r10 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r10 > + addq %r12,%rcx > + addq %r12,%r10 > + > + leaq 24(%rbp),%rbp > + movq 24(%rsp),%r13 > + movq 0(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r10 > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 88(%rsp),%r12 > + > + addq 16(%rsp),%r12 > + movq %rcx,%r13 > + addq %r15,%r12 > + movq %r10,%r14 > + rorq $23,%r13 > + movq %rdx,%r15 > + > + xorq %rcx,%r13 > + rorq $5,%r14 > + xorq %r8,%r15 > + > + movq %r12,16(%rsp) > + xorq %r10,%r14 > + andq %rcx,%r15 > + > + rorq $4,%r13 > + addq %r9,%r12 > + xorq %r8,%r15 > + > + rorq $6,%r14 > + xorq %rcx,%r13 > + addq %r15,%r12 > + > + movq %r10,%r15 > + addq (%rbp),%r12 > + xorq %r10,%r14 > + > + xorq %r11,%r15 > + rorq $14,%r13 > + movq %r11,%r9 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r9 > + addq %r12,%rbx > + addq %r12,%r9 > + > + leaq 8(%rbp),%rbp > + movq 32(%rsp),%r13 > + movq 8(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r9 > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 96(%rsp),%r12 > + > + addq 24(%rsp),%r12 > + movq %rbx,%r13 > + addq %rdi,%r12 > + movq %r9,%r14 > + rorq $23,%r13 > + movq %rcx,%rdi > + > + xorq %rbx,%r13 > + rorq $5,%r14 > + xorq %rdx,%rdi > + > + movq %r12,24(%rsp) > + xorq %r9,%r14 > + andq %rbx,%rdi > + > + rorq $4,%r13 > + addq %r8,%r12 > + xorq %rdx,%rdi > + > + rorq $6,%r14 > + xorq %rbx,%r13 > + addq %rdi,%r12 > + > + movq %r9,%rdi > + addq (%rbp),%r12 > + xorq %r9,%r14 > + > + xorq %r10,%rdi > + rorq $14,%r13 > + movq %r10,%r8 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r8 > + addq %r12,%rax > + addq %r12,%r8 > + > + leaq 24(%rbp),%rbp > + movq 40(%rsp),%r13 > + movq 16(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r8 > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 104(%rsp),%r12 > + > + addq 32(%rsp),%r12 > + movq %rax,%r13 > + addq %r15,%r12 > + movq %r8,%r14 > + rorq $23,%r13 > + movq %rbx,%r15 > + > + xorq %rax,%r13 > + rorq $5,%r14 > + xorq %rcx,%r15 > + > + movq %r12,32(%rsp) > + xorq %r8,%r14 > + andq %rax,%r15 > + > + rorq $4,%r13 > + addq %rdx,%r12 > + xorq %rcx,%r15 > + > + rorq $6,%r14 > + xorq %rax,%r13 > + addq %r15,%r12 > + > + movq %r8,%r15 > + addq (%rbp),%r12 > + xorq %r8,%r14 > + > + xorq %r9,%r15 > + rorq $14,%r13 > + movq %r9,%rdx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rdx > + addq %r12,%r11 > + addq %r12,%rdx > + > + leaq 8(%rbp),%rbp > + movq 48(%rsp),%r13 > + movq 24(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rdx > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 112(%rsp),%r12 > + > + addq 40(%rsp),%r12 > + movq %r11,%r13 > + addq %rdi,%r12 > + movq %rdx,%r14 > + rorq $23,%r13 > + movq %rax,%rdi > + > + xorq %r11,%r13 > + rorq $5,%r14 > + xorq %rbx,%rdi > + > + movq %r12,40(%rsp) > + xorq %rdx,%r14 > + andq %r11,%rdi > + > + rorq $4,%r13 > + addq %rcx,%r12 > + xorq %rbx,%rdi > + > + rorq $6,%r14 > + xorq %r11,%r13 > + addq %rdi,%r12 > + > + movq %rdx,%rdi > + addq (%rbp),%r12 > + xorq %rdx,%r14 > + > + xorq %r8,%rdi > + rorq $14,%r13 > + movq %r8,%rcx > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rcx > + addq %r12,%r10 > + addq %r12,%rcx > + > + leaq 24(%rbp),%rbp > + movq 56(%rsp),%r13 > + movq 32(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rcx > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 120(%rsp),%r12 > + > + addq 48(%rsp),%r12 > + movq %r10,%r13 > + addq %r15,%r12 > + movq %rcx,%r14 > + rorq $23,%r13 > + movq %r11,%r15 > + > + xorq %r10,%r13 > + rorq $5,%r14 > + xorq %rax,%r15 > + > + movq %r12,48(%rsp) > + xorq %rcx,%r14 > + andq %r10,%r15 > + > + rorq $4,%r13 > + addq %rbx,%r12 > + xorq %rax,%r15 > + > + rorq $6,%r14 > + xorq %r10,%r13 > + addq %r15,%r12 > + > + movq %rcx,%r15 > + addq (%rbp),%r12 > + xorq %rcx,%r14 > + > + xorq %rdx,%r15 > + rorq $14,%r13 > + movq %rdx,%rbx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rbx > + addq %r12,%r9 > + addq %r12,%rbx > + > + leaq 8(%rbp),%rbp > + movq 64(%rsp),%r13 > + movq 40(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rbx > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 0(%rsp),%r12 > + > + addq 56(%rsp),%r12 > + movq %r9,%r13 > + addq %rdi,%r12 > + movq %rbx,%r14 > + rorq $23,%r13 > + movq %r10,%rdi > + > + xorq %r9,%r13 > + rorq $5,%r14 > + xorq %r11,%rdi > + > + movq %r12,56(%rsp) > + xorq %rbx,%r14 > + andq %r9,%rdi > + > + rorq $4,%r13 > + addq %rax,%r12 > + xorq %r11,%rdi > + > + rorq $6,%r14 > + xorq %r9,%r13 > + addq %rdi,%r12 > + > + movq %rbx,%rdi > + addq (%rbp),%r12 > + xorq %rbx,%r14 > + > + xorq %rcx,%rdi > + rorq $14,%r13 > + movq %rcx,%rax > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rax > + addq %r12,%r8 > + addq %r12,%rax > + > + leaq 24(%rbp),%rbp > + movq 72(%rsp),%r13 > + movq 48(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rax > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 8(%rsp),%r12 > + > + addq 64(%rsp),%r12 > + movq %r8,%r13 > + addq %r15,%r12 > + movq %rax,%r14 > + rorq $23,%r13 > + movq %r9,%r15 > + > + xorq %r8,%r13 > + rorq $5,%r14 > + xorq %r10,%r15 > + > + movq %r12,64(%rsp) > + xorq %rax,%r14 > + andq %r8,%r15 > + > + rorq $4,%r13 > + addq %r11,%r12 > + xorq %r10,%r15 > + > + rorq $6,%r14 > + xorq %r8,%r13 > + addq %r15,%r12 > + > + movq %rax,%r15 > + addq (%rbp),%r12 > + xorq %rax,%r14 > + > + xorq %rbx,%r15 > + rorq $14,%r13 > + movq %rbx,%r11 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r11 > + addq %r12,%rdx > + addq %r12,%r11 > + > + leaq 8(%rbp),%rbp > + movq 80(%rsp),%r13 > + movq 56(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r11 > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 16(%rsp),%r12 > + > + addq 72(%rsp),%r12 > + movq %rdx,%r13 > + addq %rdi,%r12 > + movq %r11,%r14 > + rorq $23,%r13 > + movq %r8,%rdi > + > + xorq %rdx,%r13 > + rorq $5,%r14 > + xorq %r9,%rdi > + > + movq %r12,72(%rsp) > + xorq %r11,%r14 > + andq %rdx,%rdi > + > + rorq $4,%r13 > + addq %r10,%r12 > + xorq %r9,%rdi > + > + rorq $6,%r14 > + xorq %rdx,%r13 > + addq %rdi,%r12 > + > + movq %r11,%rdi > + addq (%rbp),%r12 > + xorq %r11,%r14 > + > + xorq %rax,%rdi > + rorq $14,%r13 > + movq %rax,%r10 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r10 > + addq %r12,%rcx > + addq %r12,%r10 > + > + leaq 24(%rbp),%rbp > + movq 88(%rsp),%r13 > + movq 64(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r10 > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 24(%rsp),%r12 > + > + addq 80(%rsp),%r12 > + movq %rcx,%r13 > + addq %r15,%r12 > + movq %r10,%r14 > + rorq $23,%r13 > + movq %rdx,%r15 > + > + xorq %rcx,%r13 > + rorq $5,%r14 > + xorq %r8,%r15 > + > + movq %r12,80(%rsp) > + xorq %r10,%r14 > + andq %rcx,%r15 > + > + rorq $4,%r13 > + addq %r9,%r12 > + xorq %r8,%r15 > + > + rorq $6,%r14 > + xorq %rcx,%r13 > + addq %r15,%r12 > + > + movq %r10,%r15 > + addq (%rbp),%r12 > + xorq %r10,%r14 > + > + xorq %r11,%r15 > + rorq $14,%r13 > + movq %r11,%r9 > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%r9 > + addq %r12,%rbx > + addq %r12,%r9 > + > + leaq 8(%rbp),%rbp > + movq 96(%rsp),%r13 > + movq 72(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r9 > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 32(%rsp),%r12 > + > + addq 88(%rsp),%r12 > + movq %rbx,%r13 > + addq %rdi,%r12 > + movq %r9,%r14 > + rorq $23,%r13 > + movq %rcx,%rdi > + > + xorq %rbx,%r13 > + rorq $5,%r14 > + xorq %rdx,%rdi > + > + movq %r12,88(%rsp) > + xorq %r9,%r14 > + andq %rbx,%rdi > + > + rorq $4,%r13 > + addq %r8,%r12 > + xorq %rdx,%rdi > + > + rorq $6,%r14 > + xorq %rbx,%r13 > + addq %rdi,%r12 > + > + movq %r9,%rdi > + addq (%rbp),%r12 > + xorq %r9,%r14 > + > + xorq %r10,%rdi > + rorq $14,%r13 > + movq %r10,%r8 > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%r8 > + addq %r12,%rax > + addq %r12,%r8 > + > + leaq 24(%rbp),%rbp > + movq 104(%rsp),%r13 > + movq 80(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%r8 > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 40(%rsp),%r12 > + > + addq 96(%rsp),%r12 > + movq %rax,%r13 > + addq %r15,%r12 > + movq %r8,%r14 > + rorq $23,%r13 > + movq %rbx,%r15 > + > + xorq %rax,%r13 > + rorq $5,%r14 > + xorq %rcx,%r15 > + > + movq %r12,96(%rsp) > + xorq %r8,%r14 > + andq %rax,%r15 > + > + rorq $4,%r13 > + addq %rdx,%r12 > + xorq %rcx,%r15 > + > + rorq $6,%r14 > + xorq %rax,%r13 > + addq %r15,%r12 > + > + movq %r8,%r15 > + addq (%rbp),%r12 > + xorq %r8,%r14 > + > + xorq %r9,%r15 > + rorq $14,%r13 > + movq %r9,%rdx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rdx > + addq %r12,%r11 > + addq %r12,%rdx > + > + leaq 8(%rbp),%rbp > + movq 112(%rsp),%r13 > + movq 88(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rdx > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 48(%rsp),%r12 > + > + addq 104(%rsp),%r12 > + movq %r11,%r13 > + addq %rdi,%r12 > + movq %rdx,%r14 > + rorq $23,%r13 > + movq %rax,%rdi > + > + xorq %r11,%r13 > + rorq $5,%r14 > + xorq %rbx,%rdi > + > + movq %r12,104(%rsp) > + xorq %rdx,%r14 > + andq %r11,%rdi > + > + rorq $4,%r13 > + addq %rcx,%r12 > + xorq %rbx,%rdi > + > + rorq $6,%r14 > + xorq %r11,%r13 > + addq %rdi,%r12 > + > + movq %rdx,%rdi > + addq (%rbp),%r12 > + xorq %rdx,%r14 > + > + xorq %r8,%rdi > + rorq $14,%r13 > + movq %r8,%rcx > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rcx > + addq %r12,%r10 > + addq %r12,%rcx > + > + leaq 24(%rbp),%rbp > + movq 120(%rsp),%r13 > + movq 96(%rsp),%r15 > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rcx > + movq %r15,%r14 > + rorq $42,%r15 > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%r15 > + shrq $6,%r14 > + > + rorq $19,%r15 > + xorq %r13,%r12 > + xorq %r14,%r15 > + addq 56(%rsp),%r12 > + > + addq 112(%rsp),%r12 > + movq %r10,%r13 > + addq %r15,%r12 > + movq %rcx,%r14 > + rorq $23,%r13 > + movq %r11,%r15 > + > + xorq %r10,%r13 > + rorq $5,%r14 > + xorq %rax,%r15 > + > + movq %r12,112(%rsp) > + xorq %rcx,%r14 > + andq %r10,%r15 > + > + rorq $4,%r13 > + addq %rbx,%r12 > + xorq %rax,%r15 > + > + rorq $6,%r14 > + xorq %r10,%r13 > + addq %r15,%r12 > + > + movq %rcx,%r15 > + addq (%rbp),%r12 > + xorq %rcx,%r14 > + > + xorq %rdx,%r15 > + rorq $14,%r13 > + movq %rdx,%rbx > + > + andq %r15,%rdi > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %rdi,%rbx > + addq %r12,%r9 > + addq %r12,%rbx > + > + leaq 8(%rbp),%rbp > + movq 0(%rsp),%r13 > + movq 104(%rsp),%rdi > + > + movq %r13,%r12 > + rorq $7,%r13 > + addq %r14,%rbx > + movq %rdi,%r14 > + rorq $42,%rdi > + > + xorq %r12,%r13 > + shrq $7,%r12 > + rorq $1,%r13 > + xorq %r14,%rdi > + shrq $6,%r14 > + > + rorq $19,%rdi > + xorq %r13,%r12 > + xorq %r14,%rdi > + addq 64(%rsp),%r12 > + > + addq 120(%rsp),%r12 > + movq %r9,%r13 > + addq %rdi,%r12 > + movq %rbx,%r14 > + rorq $23,%r13 > + movq %r10,%rdi > + > + xorq %r9,%r13 > + rorq $5,%r14 > + xorq %r11,%rdi > + > + movq %r12,120(%rsp) > + xorq %rbx,%r14 > + andq %r9,%rdi > + > + rorq $4,%r13 > + addq %rax,%r12 > + xorq %r11,%rdi > + > + rorq $6,%r14 > + xorq %r9,%r13 > + addq %rdi,%r12 > + > + movq %rbx,%rdi > + addq (%rbp),%r12 > + xorq %rbx,%r14 > + > + xorq %rcx,%rdi > + rorq $14,%r13 > + movq %rcx,%rax > + > + andq %rdi,%r15 > + rorq $28,%r14 > + addq %r13,%r12 > + > + xorq %r15,%rax > + addq %r12,%r8 > + addq %r12,%rax > + > + leaq 24(%rbp),%rbp > + cmpb $0,7(%rbp) > + jnz .Lrounds_16_xx > + > + movq 128+0(%rsp),%rdi > + addq %r14,%rax > + leaq 128(%rsi),%rsi > + > + addq 0(%rdi),%rax > + addq 8(%rdi),%rbx > + addq 16(%rdi),%rcx > + addq 24(%rdi),%rdx > + addq 32(%rdi),%r8 > + addq 40(%rdi),%r9 > + addq 48(%rdi),%r10 > + addq 56(%rdi),%r11 > + > + cmpq 128+16(%rsp),%rsi > + > + movq %rax,0(%rdi) > + movq %rbx,8(%rdi) > + movq %rcx,16(%rdi) > + movq %rdx,24(%rdi) > + movq %r8,32(%rdi) > + movq %r9,40(%rdi) > + movq %r10,48(%rdi) > + movq %r11,56(%rdi) > + jb .Lloop > + > + movq 152(%rsp),%rsi > +.cfi_def_cfa %rsi,8 > + movq -48(%rsi),%r15 > +.cfi_restore %r15 > + movq -40(%rsi),%r14 > +.cfi_restore %r14 > + movq -32(%rsi),%r13 > +.cfi_restore %r13 > + movq -24(%rsi),%r12 > +.cfi_restore %r12 > + movq -16(%rsi),%rbp > +.cfi_restore %rbp > + movq -8(%rsi),%rbx > +.cfi_restore %rbx > + leaq (%rsi),%rsp > +.cfi_def_cfa_register %rsp > +.Lepilogue: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size sha512_block_data_order,.-sha512_block_data_order > +.align 64 > +.type K512,@object > +K512: > +.quad 0x428a2f98d728ae22,0x7137449123ef65cd > +.quad 0x428a2f98d728ae22,0x7137449123ef65cd > +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc > +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc > +.quad 0x3956c25bf348b538,0x59f111f1b605d019 > +.quad 0x3956c25bf348b538,0x59f111f1b605d019 > +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 > +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 > +.quad 0xd807aa98a3030242,0x12835b0145706fbe > +.quad 0xd807aa98a3030242,0x12835b0145706fbe > +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 > +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 > +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 > +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 > +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 > +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 > +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 > +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 > +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 > +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 > +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 > +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 > +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 > +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 > +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 > +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 > +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 > +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 > +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 > +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 > +.quad 0x06ca6351e003826f,0x142929670a0e6e70 > +.quad 0x06ca6351e003826f,0x142929670a0e6e70 > +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 > +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 > +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df > +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df > +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 > +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 > +.quad 0x81c2c92e47edaee6,0x92722c851482353b > +.quad 0x81c2c92e47edaee6,0x92722c851482353b > +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 > +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 > +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 > +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 > +.quad 0xd192e819d6ef5218,0xd69906245565a910 > +.quad 0xd192e819d6ef5218,0xd69906245565a910 > +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 > +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 > +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 > +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 > +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 > +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 > +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb > +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb > +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 > +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 > +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 > +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 > +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec > +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec > +.quad 0x90befffa23631e28,0xa4506cebde82bde9 > +.quad 0x90befffa23631e28,0xa4506cebde82bde9 > +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b > +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b > +.quad 0xca273eceea26619c,0xd186b8c721c0c207 > +.quad 0xca273eceea26619c,0xd186b8c721c0c207 > +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 > +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 > +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 > +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 > +.quad 0x113f9804bef90dae,0x1b710b35131c471b > +.quad 0x113f9804bef90dae,0x1b710b35131c471b > +.quad 0x28db77f523047d84,0x32caab7b40c72493 > +.quad 0x28db77f523047d84,0x32caab7b40c72493 > +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c > +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c > +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a > +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a > +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 > +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 > + > +.quad 0x0001020304050607,0x08090a0b0c0d0e0f > +.quad 0x0001020304050607,0x08090a0b0c0d0e0f > +.byte > 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,= 1 > 09,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,= 83, > 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,= 1 > 14,103,62,0 > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S > new file mode 100644 > index 0000000000..cac5f8f32c > --- /dev/null > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S > @@ -0,0 +1,491 @@ > +# WARNING: do not edit! > +# Generated from openssl/crypto/x86_64cpuid.pl > +# > +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. > +# > +# Licensed under the OpenSSL license (the "License"). You may not use > +# this file except in compliance with the License. You can obtain a cop= y > +# in the file LICENSE in the source distribution or at > +# https://www.openssl.org/source/license.html > + > + > +.hidden OPENSSL_cpuid_setup > +.section .init > + call OPENSSL_cpuid_setup > + > +.hidden OPENSSL_ia32cap_P > +.comm OPENSSL_ia32cap_P,16,4 > + > +.text > + > +.globl OPENSSL_atomic_add > +.type OPENSSL_atomic_add,@function > +.align 16 > +OPENSSL_atomic_add: > +.cfi_startproc > + movl (%rdi),%eax > +.Lspin: leaq (%rsi,%rax,1),%r8 > +.byte 0xf0 > + cmpxchgl %r8d,(%rdi) > + jne .Lspin > + movl %r8d,%eax > +.byte 0x48,0x98 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_atomic_add,.-OPENSSL_atomic_add > + > +.globl OPENSSL_rdtsc > +.type OPENSSL_rdtsc,@function > +.align 16 > +OPENSSL_rdtsc: > +.cfi_startproc > + rdtsc > + shlq $32,%rdx > + orq %rdx,%rax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_rdtsc,.-OPENSSL_rdtsc > + > +.globl OPENSSL_ia32_cpuid > +.type OPENSSL_ia32_cpuid,@function > +.align 16 > +OPENSSL_ia32_cpuid: > +.cfi_startproc > + movq %rbx,%r8 > +.cfi_register %rbx,%r8 > + > + xorl %eax,%eax > + movq %rax,8(%rdi) > + cpuid > + movl %eax,%r11d > + > + xorl %eax,%eax > + cmpl $0x756e6547,%ebx > + setne %al > + movl %eax,%r9d > + cmpl $0x49656e69,%edx > + setne %al > + orl %eax,%r9d > + cmpl $0x6c65746e,%ecx > + setne %al > + orl %eax,%r9d > + jz .Lintel > + > + cmpl $0x68747541,%ebx > + setne %al > + movl %eax,%r10d > + cmpl $0x69746E65,%edx > + setne %al > + orl %eax,%r10d > + cmpl $0x444D4163,%ecx > + setne %al > + orl %eax,%r10d > + jnz .Lintel > + > + > + movl $0x80000000,%eax > + cpuid > + cmpl $0x80000001,%eax > + jb .Lintel > + movl %eax,%r10d > + movl $0x80000001,%eax > + cpuid > + orl %ecx,%r9d > + andl $0x00000801,%r9d > + > + cmpl $0x80000008,%r10d > + jb .Lintel > + > + movl $0x80000008,%eax > + cpuid > + movzbq %cl,%r10 > + incq %r10 > + > + movl $1,%eax > + cpuid > + btl $28,%edx > + jnc .Lgeneric > + shrl $16,%ebx > + cmpb %r10b,%bl > + ja .Lgeneric > + andl $0xefffffff,%edx > + jmp .Lgeneric > + > +.Lintel: > + cmpl $4,%r11d > + movl $-1,%r10d > + jb .Lnocacheinfo > + > + movl $4,%eax > + movl $0,%ecx > + cpuid > + movl %eax,%r10d > + shrl $14,%r10d > + andl $0xfff,%r10d > + > +.Lnocacheinfo: > + movl $1,%eax > + cpuid > + movd %eax,%xmm0 > + andl $0xbfefffff,%edx > + cmpl $0,%r9d > + jne .Lnotintel > + orl $0x40000000,%edx > + andb $15,%ah > + cmpb $15,%ah > + jne .LnotP4 > + orl $0x00100000,%edx > +.LnotP4: > + cmpb $6,%ah > + jne .Lnotintel > + andl $0x0fff0ff0,%eax > + cmpl $0x00050670,%eax > + je .Lknights > + cmpl $0x00080650,%eax > + jne .Lnotintel > +.Lknights: > + andl $0xfbffffff,%ecx > + > +.Lnotintel: > + btl $28,%edx > + jnc .Lgeneric > + andl $0xefffffff,%edx > + cmpl $0,%r10d > + je .Lgeneric > + > + orl $0x10000000,%edx > + shrl $16,%ebx > + cmpb $1,%bl > + ja .Lgeneric > + andl $0xefffffff,%edx > +.Lgeneric: > + andl $0x00000800,%r9d > + andl $0xfffff7ff,%ecx > + orl %ecx,%r9d > + > + movl %edx,%r10d > + > + cmpl $7,%r11d > + jb .Lno_extended_info > + movl $7,%eax > + xorl %ecx,%ecx > + cpuid > + btl $26,%r9d > + jc .Lnotknights > + andl $0xfff7ffff,%ebx > +.Lnotknights: > + movd %xmm0,%eax > + andl $0x0fff0ff0,%eax > + cmpl $0x00050650,%eax > + jne .Lnotskylakex > + andl $0xfffeffff,%ebx > + > +.Lnotskylakex: > + movl %ebx,8(%rdi) > + movl %ecx,12(%rdi) > +.Lno_extended_info: > + > + btl $27,%r9d > + jnc .Lclear_avx > + xorl %ecx,%ecx > +.byte 0x0f,0x01,0xd0 > + andl $0xe6,%eax > + cmpl $0xe6,%eax > + je .Ldone > + andl $0x3fdeffff,8(%rdi) > + > + > + > + > + andl $6,%eax > + cmpl $6,%eax > + je .Ldone > +.Lclear_avx: > + movl $0xefffe7ff,%eax > + andl %eax,%r9d > + movl $0x3fdeffdf,%eax > + andl %eax,8(%rdi) > +.Ldone: > + shlq $32,%r9 > + movl %r10d,%eax > + movq %r8,%rbx > +.cfi_restore %rbx > + orq %r9,%rax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid > + > +.globl OPENSSL_cleanse > +.type OPENSSL_cleanse,@function > +.align 16 > +OPENSSL_cleanse: > +.cfi_startproc > + xorq %rax,%rax > + cmpq $15,%rsi > + jae .Lot > + cmpq $0,%rsi > + je .Lret > +.Little: > + movb %al,(%rdi) > + subq $1,%rsi > + leaq 1(%rdi),%rdi > + jnz .Little > +.Lret: > + .byte 0xf3,0xc3 > +.align 16 > +.Lot: > + testq $7,%rdi > + jz .Laligned > + movb %al,(%rdi) > + leaq -1(%rsi),%rsi > + leaq 1(%rdi),%rdi > + jmp .Lot > +.Laligned: > + movq %rax,(%rdi) > + leaq -8(%rsi),%rsi > + testq $-8,%rsi > + leaq 8(%rdi),%rdi > + jnz .Laligned > + cmpq $0,%rsi > + jne .Little > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_cleanse,.-OPENSSL_cleanse > + > +.globl CRYPTO_memcmp > +.type CRYPTO_memcmp,@function > +.align 16 > +CRYPTO_memcmp: > +.cfi_startproc > + xorq %rax,%rax > + xorq %r10,%r10 > + cmpq $0,%rdx > + je .Lno_data > + cmpq $16,%rdx > + jne .Loop_cmp > + movq (%rdi),%r10 > + movq 8(%rdi),%r11 > + movq $1,%rdx > + xorq (%rsi),%r10 > + xorq 8(%rsi),%r11 > + orq %r11,%r10 > + cmovnzq %rdx,%rax > + .byte 0xf3,0xc3 > + > +.align 16 > +.Loop_cmp: > + movb (%rdi),%r10b > + leaq 1(%rdi),%rdi > + xorb (%rsi),%r10b > + leaq 1(%rsi),%rsi > + orb %r10b,%al > + decq %rdx > + jnz .Loop_cmp > + negq %rax > + shrq $63,%rax > +.Lno_data: > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size CRYPTO_memcmp,.-CRYPTO_memcmp > +.globl OPENSSL_wipe_cpu > +.type OPENSSL_wipe_cpu,@function > +.align 16 > +OPENSSL_wipe_cpu: > +.cfi_startproc > + pxor %xmm0,%xmm0 > + pxor %xmm1,%xmm1 > + pxor %xmm2,%xmm2 > + pxor %xmm3,%xmm3 > + pxor %xmm4,%xmm4 > + pxor %xmm5,%xmm5 > + pxor %xmm6,%xmm6 > + pxor %xmm7,%xmm7 > + pxor %xmm8,%xmm8 > + pxor %xmm9,%xmm9 > + pxor %xmm10,%xmm10 > + pxor %xmm11,%xmm11 > + pxor %xmm12,%xmm12 > + pxor %xmm13,%xmm13 > + pxor %xmm14,%xmm14 > + pxor %xmm15,%xmm15 > + xorq %rcx,%rcx > + xorq %rdx,%rdx > + xorq %rsi,%rsi > + xorq %rdi,%rdi > + xorq %r8,%r8 > + xorq %r9,%r9 > + xorq %r10,%r10 > + xorq %r11,%r11 > + leaq 8(%rsp),%rax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu > +.globl OPENSSL_instrument_bus > +.type OPENSSL_instrument_bus,@function > +.align 16 > +OPENSSL_instrument_bus: > +.cfi_startproc > + movq %rdi,%r10 > + movq %rsi,%rcx > + movq %rsi,%r11 > + > + rdtsc > + movl %eax,%r8d > + movl $0,%r9d > + clflush (%r10) > +.byte 0xf0 > + addl %r9d,(%r10) > + jmp .Loop > +.align 16 > +.Loop: rdtsc > + movl %eax,%edx > + subl %r8d,%eax > + movl %edx,%r8d > + movl %eax,%r9d > + clflush (%r10) > +.byte 0xf0 > + addl %eax,(%r10) > + leaq 4(%r10),%r10 > + subq $1,%rcx > + jnz .Loop > + > + movq %r11,%rax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus > + > +.globl OPENSSL_instrument_bus2 > +.type OPENSSL_instrument_bus2,@function > +.align 16 > +OPENSSL_instrument_bus2: > +.cfi_startproc > + movq %rdi,%r10 > + movq %rsi,%rcx > + movq %rdx,%r11 > + movq %rcx,8(%rsp) > + > + rdtsc > + movl %eax,%r8d > + movl $0,%r9d > + > + clflush (%r10) > +.byte 0xf0 > + addl %r9d,(%r10) > + > + rdtsc > + movl %eax,%edx > + subl %r8d,%eax > + movl %edx,%r8d > + movl %eax,%r9d > +.Loop2: > + clflush (%r10) > +.byte 0xf0 > + addl %eax,(%r10) > + > + subq $1,%r11 > + jz .Ldone2 > + > + rdtsc > + movl %eax,%edx > + subl %r8d,%eax > + movl %edx,%r8d > + cmpl %r9d,%eax > + movl %eax,%r9d > + movl $0,%edx > + setne %dl > + subq %rdx,%rcx > + leaq (%r10,%rdx,4),%r10 > + jnz .Loop2 > + > +.Ldone2: > + movq 8(%rsp),%rax > + subq %rcx,%rax > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 > +.globl OPENSSL_ia32_rdrand_bytes > +.type OPENSSL_ia32_rdrand_bytes,@function > +.align 16 > +OPENSSL_ia32_rdrand_bytes: > +.cfi_startproc > + xorq %rax,%rax > + cmpq $0,%rsi > + je .Ldone_rdrand_bytes > + > + movq $8,%r11 > +.Loop_rdrand_bytes: > +.byte 73,15,199,242 > + jc .Lbreak_rdrand_bytes > + decq %r11 > + jnz .Loop_rdrand_bytes > + jmp .Ldone_rdrand_bytes > + > +.align 16 > +.Lbreak_rdrand_bytes: > + cmpq $8,%rsi > + jb .Ltail_rdrand_bytes > + movq %r10,(%rdi) > + leaq 8(%rdi),%rdi > + addq $8,%rax > + subq $8,%rsi > + jz .Ldone_rdrand_bytes > + movq $8,%r11 > + jmp .Loop_rdrand_bytes > + > +.align 16 > +.Ltail_rdrand_bytes: > + movb %r10b,(%rdi) > + leaq 1(%rdi),%rdi > + incq %rax > + shrq $8,%r10 > + decq %rsi > + jnz .Ltail_rdrand_bytes > + > +.Ldone_rdrand_bytes: > + xorq %r10,%r10 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes > +.globl OPENSSL_ia32_rdseed_bytes > +.type OPENSSL_ia32_rdseed_bytes,@function > +.align 16 > +OPENSSL_ia32_rdseed_bytes: > +.cfi_startproc > + xorq %rax,%rax > + cmpq $0,%rsi > + je .Ldone_rdseed_bytes > + > + movq $8,%r11 > +.Loop_rdseed_bytes: > +.byte 73,15,199,250 > + jc .Lbreak_rdseed_bytes > + decq %r11 > + jnz .Loop_rdseed_bytes > + jmp .Ldone_rdseed_bytes > + > +.align 16 > +.Lbreak_rdseed_bytes: > + cmpq $8,%rsi > + jb .Ltail_rdseed_bytes > + movq %r10,(%rdi) > + leaq 8(%rdi),%rdi > + addq $8,%rax > + subq $8,%rsi > + jz .Ldone_rdseed_bytes > + movq $8,%r11 > + jmp .Loop_rdseed_bytes > + > +.align 16 > +.Ltail_rdseed_bytes: > + movb %r10b,(%rdi) > + leaq 1(%rdi),%rdi > + incq %rax > + shrq $8,%r10 > + decq %rsi > + jnz .Ltail_rdseed_bytes > + > +.Ldone_rdseed_bytes: > + xorq %r10,%r10 > + .byte 0xf3,0xc3 > +.cfi_endproc > +.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes > -- > 2.32.0.windows.1