From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EB47C432C2 for ; Wed, 25 Sep 2019 16:17:31 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D2A5721D79 for ; Wed, 25 Sep 2019 16:17:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="IRKEdXLZ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="z8OuhkVl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D2A5721D79 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TrY4VoadqR3UdBTol34HtYt8aou/04dk0lAtPqyTXag=; b=IRKEdXLZdf4MC+ 5l/Pu5DNoUy6/mumx7EAq4gEMZd/gYYIh494glnDWWw/MJj3UbUVrHYzeASipg7rrBbtgECmcbRYB WVVd+yMNmV+A+6mkaKtz6ndwuQCd88EFH6rMeNSvEGzO5uDZUenho/Mx/FCOTtvsqKSXgVJjdmTbc 4WBeiKGmW87xnyVcChlboMRiVyOAxGk8y2Korjlim0LNgIyn3A2Y4V1A3xrJAPCDqs9VrUuVtRJGG DOxxwe2bWAzN7jybg7mXb0xT+ZctjwZWSdIDVPsJyT8o16120Tc++uXNNhlMVk7RsTHqHQHY58X31 TMGSfbzo4cxkSgLeolRA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iD9yl-0007Ly-5u; Wed, 25 Sep 2019 16:17:23 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iD9vV-0003y9-4J for linux-arm-kernel@lists.infradead.org; Wed, 25 Sep 2019 16:14:05 +0000 Received: by mail-wr1-x443.google.com with SMTP id r5so7609427wrm.12 for ; Wed, 25 Sep 2019 09:14:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kSUfY6BEXBgm8PBl4NM38bq4FokXR/M8kMBF5SPnY6c=; b=z8OuhkVl6QAmyOjrvoADZg2g8ZZ/bTV/zZe0uz6H2zCwTuGSqzGinURbhc7gN4Qt6U EJXwo/vv7zQXtQT11EqcMj9fP2tIJC7yywEbI9J3SLLnBcdthlZxVl8BuaIlWbm6THek mIGaCgC7gh7xHoTZqmPirRtsSEVK65aMj76fLUXOUq1RiSMqMoaXtFGzl3barUwM845R 4Ruc+RDx+ppcOWzR4e5DRfpVb4ixuwEOsvI9Kl2dl91jQ5rTWDsgUBK7xDuolrh9Mokc 1cZ/4G/MxxVDzbEmSPxWXdsP1EMCdMHeHHrWJn/fAPiz22Uj7v0QRDdzR9QfthDOXmbU 1OKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kSUfY6BEXBgm8PBl4NM38bq4FokXR/M8kMBF5SPnY6c=; b=ckvJecm1h81C0U++nPTk/tXJa9JmjypHvi+Rwo7jRkG+fKiIWsj2JpG7CTIa1xG6bg ZuBexbxuELLSa6SSeSJwq5v/LOR6tFin/+nbPp/LanbJK+sHgIOcbacXfiqDMANtuort NVB8uNbhq0APZ2gVHZ2fOzpyINC+HwtD46+/hUTi3r2cNKH6SKbX6wmrUqGw4GYvfbqP muoyRF9h7Cj1ffmowL2rsFyTIFllX6BUQ6kkdKEpY8gZ1DBIcfMezOyFnbIgxXr/m2IJ tnZjZs9RIA8LOHJVD4SiezQYyTtn7+iSDWUmyupK6iR7p3AxfZDuw+PMcly8NM7czO8T T+SQ== X-Gm-Message-State: APjAAAVQI/7+KtTStk7XOnn6D1tBSRCcvW3Eh5+Z+t41wXM2fquvupYI Y5Nb7UW5n6QgI3CWWKFVOjVFfQ== X-Google-Smtp-Source: APXvYqyQZoCaMaVbtnCPbJVIleM5/XJDZjTPa6qND3Axok+ArgSJ7mXujP2VX/FI5Q6b+r/K1Ww8QQ== X-Received: by 2002:a5d:4ed0:: with SMTP id s16mr10339744wrv.248.1569428039638; Wed, 25 Sep 2019 09:13:59 -0700 (PDT) Received: from localhost.localdomain (laubervilliers-657-1-83-120.w92-154.abo.wanadoo.fr. [92.154.90.120]) by smtp.gmail.com with ESMTPSA id o70sm4991085wme.29.2019.09.25.09.13.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Sep 2019 09:13:58 -0700 (PDT) From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Subject: [RFC PATCH 09/18] crypto: poly1305 - move core algorithm into lib/crypto Date: Wed, 25 Sep 2019 18:12:46 +0200 Message-Id: <20190925161255.1871-10-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190925161255.1871-1-ard.biesheuvel@linaro.org> References: <20190925161255.1871-1-ard.biesheuvel@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190925_091401_508319_F971A721 X-CRM114-Status: GOOD ( 21.07 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Jason A . Donenfeld" , Catalin Marinas , Herbert Xu , Arnd Bergmann , Ard Biesheuvel , Greg KH , Eric Biggers , Samuel Neves , Will Deacon , Dan Carpenter , Andy Lutomirski , Marc Zyngier , Linus Torvalds , David Miller , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org TW92ZSB0aGUgY29yZSBQb2x5MTMwNSB0cmFuc2Zvcm1hdGlvbiBpbnRvIGEgc2VwYXJhdGUgbGli cmFyeSBpbgpsaWIvY3J5cHRvIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIHN1YnN5c3RlbXMg d2l0aG91dCBnb2luZwp0aHJvdWdoIHRoZSBlbnRpcmUgY3J5cHRvIEFQSS4KClNpZ25lZC1vZmYt Ynk6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPgotLS0KIGFyY2gv eDg2L2NyeXB0by9wb2x5MTMwNV9nbHVlLmMgICAgfCAgIDIgKy0KIGNyeXB0by9LY29uZmlnICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogY3J5cHRvL2FkaWFudHVtLmMgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogY3J5cHRvL25ocG9seTEzMDUuYyAgICAgICAgICAgICAgICB8ICAgMiAr LQogY3J5cHRvL3BvbHkxMzA1X2dlbmVyaWMuYyAgICAgICAgICB8IDE2NyArLS0tLS0tLS0tLS0t LS0tLS0tLQogaW5jbHVkZS9jcnlwdG8vaW50ZXJuYWwvcG9seTEzMDUuaCB8ICAzNyArKysrKwog aW5jbHVkZS9jcnlwdG8vcG9seTEzMDUuaCAgICAgICAgICB8ICAzMiArLS0tCiBsaWIvY3J5cHRv L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAzICsKIGxpYi9jcnlwdG8vcG9seTEzMDUuYyAg ICAgICAgICAgICAgfCAxNTggKysrKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDIx NyBpbnNlcnRpb25zKCspLCAxOTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv Y3J5cHRvL3BvbHkxMzA1X2dsdWUuYyBiL2FyY2gveDg2L2NyeXB0by9wb2x5MTMwNV9nbHVlLmMK aW5kZXggZjJhZmFhOGUyM2MyLi45MjkxY2ZlYTc5OWQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Ny eXB0by9wb2x5MTMwNV9nbHVlLmMKKysrIGIvYXJjaC94ODYvY3J5cHRvL3BvbHkxMzA1X2dsdWUu YwpAQCAtNyw4ICs3LDggQEAKIAogI2luY2x1ZGUgPGNyeXB0by9hbGdhcGkuaD4KICNpbmNsdWRl IDxjcnlwdG8vaW50ZXJuYWwvaGFzaC5oPgorI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9wb2x5 MTMwNS5oPgogI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9zaW1kLmg+Ci0jaW5jbHVkZSA8Y3J5 cHRvL3BvbHkxMzA1Lmg+CiAjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CiAjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CmRpZmYgLS1naXQgYS9jcnlw dG8vS2NvbmZpZyBiL2NyeXB0by9LY29uZmlnCmluZGV4IDI1YTA2Y2Y0OWE1ZC4uNDU1ODkxMTBi ZjgwIDEwMDY0NAotLS0gYS9jcnlwdG8vS2NvbmZpZworKysgYi9jcnlwdG8vS2NvbmZpZwpAQCAt NjU0LDkgKzY1NCwxMyBAQCBjb25maWcgQ1JZUFRPX0dIQVNICiAJICBHSEFTSCBpcyB0aGUgaGFz aCBmdW5jdGlvbiB1c2VkIGluIEdDTSAoR2Fsb2lzL0NvdW50ZXIgTW9kZSkuCiAJICBJdCBpcyBu b3QgYSBnZW5lcmFsLXB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uLgogCitjb25m aWcgQ1JZUFRPX0xJQl9QT0xZMTMwNQorCXRyaXN0YXRlICJQb2x5MTMwNSBhdXRoZW50aWNhdG9y IGxpYnJhcnkiCisKIGNvbmZpZyBDUllQVE9fUE9MWTEzMDUKIAl0cmlzdGF0ZSAiUG9seTEzMDUg YXV0aGVudGljYXRvciBhbGdvcml0aG0iCiAJc2VsZWN0IENSWVBUT19IQVNICisJc2VsZWN0IENS WVBUT19MSUJfUE9MWTEzMDUKIAloZWxwCiAJICBQb2x5MTMwNSBhdXRoZW50aWNhdG9yIGFsZ29y aXRobSwgUkZDNzUzOS4KIApkaWZmIC0tZ2l0IGEvY3J5cHRvL2FkaWFudHVtLmMgYi9jcnlwdG8v YWRpYW50dW0uYwppbmRleCAzOTVhM2RkZDM3MDcuLjc3NWVkMTQxOGUyYiAxMDA2NDQKLS0tIGEv Y3J5cHRvL2FkaWFudHVtLmMKKysrIGIvY3J5cHRvL2FkaWFudHVtLmMKQEAgLTI0MiwxMSArMjQy LDExIEBAIHN0YXRpYyB2b2lkIGFkaWFudHVtX2hhc2hfaGVhZGVyKHN0cnVjdCBza2NpcGhlcl9y ZXF1ZXN0ICpyZXEpCiAKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKGhlYWRlcikgJSBQT0xZMTMwNV9C TE9DS19TSVpFICE9IDApOwogCXBvbHkxMzA1X2NvcmVfYmxvY2tzKCZzdGF0ZSwgJnRjdHgtPmhl YWRlcl9oYXNoX2tleSwKLQkJCSAgICAgJmhlYWRlciwgc2l6ZW9mKGhlYWRlcikgLyBQT0xZMTMw NV9CTE9DS19TSVpFKTsKKwkJCSAgICAgJmhlYWRlciwgc2l6ZW9mKGhlYWRlcikgLyBQT0xZMTMw NV9CTE9DS19TSVpFLCAxKTsKIAogCUJVSUxEX0JVR19PTihUV0VBS19TSVpFICUgUE9MWTEzMDVf QkxPQ0tfU0laRSAhPSAwKTsKIAlwb2x5MTMwNV9jb3JlX2Jsb2Nrcygmc3RhdGUsICZ0Y3R4LT5o ZWFkZXJfaGFzaF9rZXksIHJlcS0+aXYsCi0JCQkgICAgIFRXRUFLX1NJWkUgLyBQT0xZMTMwNV9C TE9DS19TSVpFKTsKKwkJCSAgICAgVFdFQUtfU0laRSAvIFBPTFkxMzA1X0JMT0NLX1NJWkUsIDEp OwogCiAJcG9seTEzMDVfY29yZV9lbWl0KCZzdGF0ZSwgJnJjdHgtPmhlYWRlcl9oYXNoKTsKIH0K ZGlmZiAtLWdpdCBhL2NyeXB0by9uaHBvbHkxMzA1LmMgYi9jcnlwdG8vbmhwb2x5MTMwNS5jCmlu ZGV4IDlhYjRlMDdjZGU0ZC4uYjg4YTZhNzFlM2UyIDEwMDY0NAotLS0gYS9jcnlwdG8vbmhwb2x5 MTMwNS5jCisrKyBiL2NyeXB0by9uaHBvbHkxMzA1LmMKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGlj IHZvaWQgcHJvY2Vzc19uaF9oYXNoX3ZhbHVlKHN0cnVjdCBuaHBvbHkxMzA1X3N0YXRlICpzdGF0 ZSwKIAlCVUlMRF9CVUdfT04oTkhfSEFTSF9CWVRFUyAlIFBPTFkxMzA1X0JMT0NLX1NJWkUgIT0g MCk7CiAKIAlwb2x5MTMwNV9jb3JlX2Jsb2Nrcygmc3RhdGUtPnBvbHlfc3RhdGUsICZrZXktPnBv bHlfa2V5LCBzdGF0ZS0+bmhfaGFzaCwKLQkJCSAgICAgTkhfSEFTSF9CWVRFUyAvIFBPTFkxMzA1 X0JMT0NLX1NJWkUpOworCQkJICAgICBOSF9IQVNIX0JZVEVTIC8gUE9MWTEzMDVfQkxPQ0tfU0la RSwgMSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jcnlwdG8vcG9seTEzMDVfZ2VuZXJpYy5jIGIv Y3J5cHRvL3BvbHkxMzA1X2dlbmVyaWMuYwppbmRleCBhZGM0MDI5OGM3NDkuLjQ2YTJkYTFhYmFj NyAxMDA2NDQKLS0tIGEvY3J5cHRvL3BvbHkxMzA1X2dlbmVyaWMuYworKysgYi9jcnlwdG8vcG9s eTEzMDVfZ2VuZXJpYy5jCkBAIC0xMywyNyArMTMsMTIgQEAKIAogI2luY2x1ZGUgPGNyeXB0by9h bGdhcGkuaD4KICNpbmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwvaGFzaC5oPgotI2luY2x1ZGUgPGNy eXB0by9wb2x5MTMwNS5oPgorI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9wb2x5MTMwNS5oPgog I2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KIAotc3Rh dGljIGlubGluZSB1NjQgbWx0KHU2NCBhLCB1NjQgYikKLXsKLQlyZXR1cm4gYSAqIGI7Ci19Ci0K LXN0YXRpYyBpbmxpbmUgdTMyIHNyKHU2NCB2LCB1X2NoYXIgbikKLXsKLQlyZXR1cm4gdiA+PiBu OwotfQotCi1zdGF0aWMgaW5saW5lIHUzMiBhbmQodTMyIHYsIHUzMiBtYXNrKQotewotCXJldHVy biB2ICYgbWFzazsKLX0KLQogaW50IGNyeXB0b19wb2x5MTMwNV9pbml0KHN0cnVjdCBzaGFzaF9k ZXNjICpkZXNjKQogewogCXN0cnVjdCBwb2x5MTMwNV9kZXNjX2N0eCAqZGN0eCA9IHNoYXNoX2Rl c2NfY3R4KGRlc2MpOwpAQCAtNDcsMTcgKzMyLDYgQEAgaW50IGNyeXB0b19wb2x5MTMwNV9pbml0 KHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjKQogfQogRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3Bv bHkxMzA1X2luaXQpOwogCi12b2lkIHBvbHkxMzA1X2NvcmVfc2V0a2V5KHN0cnVjdCBwb2x5MTMw NV9rZXkgKmtleSwgY29uc3QgdTggKnJhd19rZXkpCi17Ci0JLyogciAmPSAweGZmZmZmZmMwZmZm ZmZmYzBmZmZmZmZjMGZmZmZmZmYgKi8KLQlrZXktPnJbMF0gPSAoZ2V0X3VuYWxpZ25lZF9sZTMy KHJhd19rZXkgKyAgMCkgPj4gMCkgJiAweDNmZmZmZmY7Ci0Ja2V5LT5yWzFdID0gKGdldF91bmFs aWduZWRfbGUzMihyYXdfa2V5ICsgIDMpID4+IDIpICYgMHgzZmZmZjAzOwotCWtleS0+clsyXSA9 IChnZXRfdW5hbGlnbmVkX2xlMzIocmF3X2tleSArICA2KSA+PiA0KSAmIDB4M2ZmYzBmZjsKLQlr ZXktPnJbM10gPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHJhd19rZXkgKyAgOSkgPj4gNikgJiAweDNm MDNmZmY7Ci0Ja2V5LT5yWzRdID0gKGdldF91bmFsaWduZWRfbGUzMihyYXdfa2V5ICsgMTIpID4+ IDgpICYgMHgwMGZmZmZmOwotfQotRVhQT1JUX1NZTUJPTF9HUEwocG9seTEzMDVfY29yZV9zZXRr ZXkpOwotCiAvKgogICogUG9seTEzMDUgcmVxdWlyZXMgYSB1bmlxdWUga2V5IGZvciBlYWNoIHRh Zywgd2hpY2ggaW1wbGllcyB0aGF0IHdlIGNhbid0IHNldAogICogaXQgb24gdGhlIHRmbSB0aGF0 IGdldHMgYWNjZXNzZWQgYnkgbXVsdGlwbGUgdXNlcnMgc2ltdWx0YW5lb3VzbHkuIEluc3RlYWQg d2UKQEAgLTg3LDg0ICs2MSw4IEBAIHVuc2lnbmVkIGludCBjcnlwdG9fcG9seTEzMDVfc2V0ZGVz Y2tleShzdHJ1Y3QgcG9seTEzMDVfZGVzY19jdHggKmRjdHgsCiB9CiBFWFBPUlRfU1lNQk9MX0dQ TChjcnlwdG9fcG9seTEzMDVfc2V0ZGVzY2tleSk7CiAKLXN0YXRpYyB2b2lkIHBvbHkxMzA1X2Js b2Nrc19pbnRlcm5hbChzdHJ1Y3QgcG9seTEzMDVfc3RhdGUgKnN0YXRlLAotCQkJCSAgICAgY29u c3Qgc3RydWN0IHBvbHkxMzA1X2tleSAqa2V5LAotCQkJCSAgICAgY29uc3Qgdm9pZCAqc3JjLCB1 bnNpZ25lZCBpbnQgbmJsb2NrcywKLQkJCQkgICAgIHUzMiBoaWJpdCkKLXsKLQl1MzIgcjAsIHIx LCByMiwgcjMsIHI0OwotCXUzMiBzMSwgczIsIHMzLCBzNDsKLQl1MzIgaDAsIGgxLCBoMiwgaDMs IGg0OwotCXU2NCBkMCwgZDEsIGQyLCBkMywgZDQ7Ci0KLQlpZiAoIW5ibG9ja3MpCi0JCXJldHVy bjsKLQotCXIwID0ga2V5LT5yWzBdOwotCXIxID0ga2V5LT5yWzFdOwotCXIyID0ga2V5LT5yWzJd OwotCXIzID0ga2V5LT5yWzNdOwotCXI0ID0ga2V5LT5yWzRdOwotCi0JczEgPSByMSAqIDU7Ci0J czIgPSByMiAqIDU7Ci0JczMgPSByMyAqIDU7Ci0JczQgPSByNCAqIDU7Ci0KLQloMCA9IHN0YXRl LT5oWzBdOwotCWgxID0gc3RhdGUtPmhbMV07Ci0JaDIgPSBzdGF0ZS0+aFsyXTsKLQloMyA9IHN0 YXRlLT5oWzNdOwotCWg0ID0gc3RhdGUtPmhbNF07Ci0KLQlkbyB7Ci0JCS8qIGggKz0gbVtpXSAq LwotCQloMCArPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHNyYyArICAwKSA+PiAwKSAmIDB4M2ZmZmZm ZjsKLQkJaDEgKz0gKGdldF91bmFsaWduZWRfbGUzMihzcmMgKyAgMykgPj4gMikgJiAweDNmZmZm ZmY7Ci0JCWgyICs9IChnZXRfdW5hbGlnbmVkX2xlMzIoc3JjICsgIDYpID4+IDQpICYgMHgzZmZm ZmZmOwotCQloMyArPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHNyYyArICA5KSA+PiA2KSAmIDB4M2Zm ZmZmZjsKLQkJaDQgKz0gKGdldF91bmFsaWduZWRfbGUzMihzcmMgKyAxMikgPj4gOCkgfCBoaWJp dDsKLQotCQkvKiBoICo9IHIgKi8KLQkJZDAgPSBtbHQoaDAsIHIwKSArIG1sdChoMSwgczQpICsg bWx0KGgyLCBzMykgKwotCQkgICAgIG1sdChoMywgczIpICsgbWx0KGg0LCBzMSk7Ci0JCWQxID0g bWx0KGgwLCByMSkgKyBtbHQoaDEsIHIwKSArIG1sdChoMiwgczQpICsKLQkJICAgICBtbHQoaDMs IHMzKSArIG1sdChoNCwgczIpOwotCQlkMiA9IG1sdChoMCwgcjIpICsgbWx0KGgxLCByMSkgKyBt bHQoaDIsIHIwKSArCi0JCSAgICAgbWx0KGgzLCBzNCkgKyBtbHQoaDQsIHMzKTsKLQkJZDMgPSBt bHQoaDAsIHIzKSArIG1sdChoMSwgcjIpICsgbWx0KGgyLCByMSkgKwotCQkgICAgIG1sdChoMywg cjApICsgbWx0KGg0LCBzNCk7Ci0JCWQ0ID0gbWx0KGgwLCByNCkgKyBtbHQoaDEsIHIzKSArIG1s dChoMiwgcjIpICsKLQkJICAgICBtbHQoaDMsIHIxKSArIG1sdChoNCwgcjApOwotCi0JCS8qIChw YXJ0aWFsKSBoICU9IHAgKi8KLQkJZDEgKz0gc3IoZDAsIDI2KTsgICAgIGgwID0gYW5kKGQwLCAw eDNmZmZmZmYpOwotCQlkMiArPSBzcihkMSwgMjYpOyAgICAgaDEgPSBhbmQoZDEsIDB4M2ZmZmZm Zik7Ci0JCWQzICs9IHNyKGQyLCAyNik7ICAgICBoMiA9IGFuZChkMiwgMHgzZmZmZmZmKTsKLQkJ ZDQgKz0gc3IoZDMsIDI2KTsgICAgIGgzID0gYW5kKGQzLCAweDNmZmZmZmYpOwotCQloMCArPSBz cihkNCwgMjYpICogNTsgaDQgPSBhbmQoZDQsIDB4M2ZmZmZmZik7Ci0JCWgxICs9IGgwID4+IDI2 OyAgICAgICBoMCA9IGgwICYgMHgzZmZmZmZmOwotCi0JCXNyYyArPSBQT0xZMTMwNV9CTE9DS19T SVpFOwotCX0gd2hpbGUgKC0tbmJsb2Nrcyk7Ci0KLQlzdGF0ZS0+aFswXSA9IGgwOwotCXN0YXRl LT5oWzFdID0gaDE7Ci0Jc3RhdGUtPmhbMl0gPSBoMjsKLQlzdGF0ZS0+aFszXSA9IGgzOwotCXN0 YXRlLT5oWzRdID0gaDQ7Ci19Ci0KLXZvaWQgcG9seTEzMDVfY29yZV9ibG9ja3Moc3RydWN0IHBv bHkxMzA1X3N0YXRlICpzdGF0ZSwKLQkJCSAgY29uc3Qgc3RydWN0IHBvbHkxMzA1X2tleSAqa2V5 LAotCQkJICBjb25zdCB2b2lkICpzcmMsIHVuc2lnbmVkIGludCBuYmxvY2tzKQotewotCXBvbHkx MzA1X2Jsb2Nrc19pbnRlcm5hbChzdGF0ZSwga2V5LCBzcmMsIG5ibG9ja3MsIDEgPDwgMjQpOwot fQotRVhQT1JUX1NZTUJPTF9HUEwocG9seTEzMDVfY29yZV9ibG9ja3MpOwotCi1zdGF0aWMgdm9p ZCBwb2x5MTMwNV9ibG9ja3Moc3RydWN0IHBvbHkxMzA1X2Rlc2NfY3R4ICpkY3R4LAotCQkJICAg IGNvbnN0IHU4ICpzcmMsIHVuc2lnbmVkIGludCBzcmNsZW4sIHUzMiBoaWJpdCkKK3N0YXRpYyB2 b2lkIHBvbHkxMzA1X2Jsb2NrcyhzdHJ1Y3QgcG9seTEzMDVfZGVzY19jdHggKmRjdHgsIGNvbnN0 IHU4ICpzcmMsCisJCQkgICAgdW5zaWduZWQgaW50IHNyY2xlbikKIHsKIAl1bnNpZ25lZCBpbnQg ZGF0YWxlbjsKIApAQCAtMTc0LDggKzcyLDggQEAgc3RhdGljIHZvaWQgcG9seTEzMDVfYmxvY2tz KHN0cnVjdCBwb2x5MTMwNV9kZXNjX2N0eCAqZGN0eCwKIAkJc3JjbGVuID0gZGF0YWxlbjsKIAl9 CiAKLQlwb2x5MTMwNV9ibG9ja3NfaW50ZXJuYWwoJmRjdHgtPmgsICZkY3R4LT5yLAotCQkJCSBz cmMsIHNyY2xlbiAvIFBPTFkxMzA1X0JMT0NLX1NJWkUsIGhpYml0KTsKKwlwb2x5MTMwNV9jb3Jl X2Jsb2NrcygmZGN0eC0+aCwgJmRjdHgtPnIsIHNyYywKKwkJCSAgICAgc3JjbGVuIC8gUE9MWTEz MDVfQkxPQ0tfU0laRSwgMSk7CiB9CiAKIGludCBjcnlwdG9fcG9seTEzMDVfdXBkYXRlKHN0cnVj dCBzaGFzaF9kZXNjICpkZXNjLApAQCAtMTkyLDE0ICs5MCwxMyBAQCBpbnQgY3J5cHRvX3BvbHkx MzA1X3VwZGF0ZShzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywKIAkJZGN0eC0+YnVmbGVuICs9IGJ5 dGVzOwogCiAJCWlmIChkY3R4LT5idWZsZW4gPT0gUE9MWTEzMDVfQkxPQ0tfU0laRSkgewotCQkJ cG9seTEzMDVfYmxvY2tzKGRjdHgsIGRjdHgtPmJ1ZiwKLQkJCQkJUE9MWTEzMDVfQkxPQ0tfU0la RSwgMSA8PCAyNCk7CisJCQlwb2x5MTMwNV9ibG9ja3MoZGN0eCwgZGN0eC0+YnVmLCBQT0xZMTMw NV9CTE9DS19TSVpFKTsKIAkJCWRjdHgtPmJ1ZmxlbiA9IDA7CiAJCX0KIAl9CiAKIAlpZiAobGlr ZWx5KHNyY2xlbiA+PSBQT0xZMTMwNV9CTE9DS19TSVpFKSkgewotCQlwb2x5MTMwNV9ibG9ja3Mo ZGN0eCwgc3JjLCBzcmNsZW4sIDEgPDwgMjQpOworCQlwb2x5MTMwNV9ibG9ja3MoZGN0eCwgc3Jj LCBzcmNsZW4pOwogCQlzcmMgKz0gc3JjbGVuIC0gKHNyY2xlbiAlIFBPTFkxMzA1X0JMT0NLX1NJ WkUpOwogCQlzcmNsZW4gJT0gUE9MWTEzMDVfQkxPQ0tfU0laRTsKIAl9CkBAIC0yMTMsNTQgKzEx MCw2IEBAIGludCBjcnlwdG9fcG9seTEzMDVfdXBkYXRlKHN0cnVjdCBzaGFzaF9kZXNjICpkZXNj LAogfQogRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3BvbHkxMzA1X3VwZGF0ZSk7CiAKLXZvaWQg cG9seTEzMDVfY29yZV9lbWl0KGNvbnN0IHN0cnVjdCBwb2x5MTMwNV9zdGF0ZSAqc3RhdGUsIHZv aWQgKmRzdCkKLXsKLQl1MzIgaDAsIGgxLCBoMiwgaDMsIGg0OwotCXUzMiBnMCwgZzEsIGcyLCBn MywgZzQ7Ci0JdTMyIG1hc2s7Ci0KLQkvKiBmdWxseSBjYXJyeSBoICovCi0JaDAgPSBzdGF0ZS0+ aFswXTsKLQloMSA9IHN0YXRlLT5oWzFdOwotCWgyID0gc3RhdGUtPmhbMl07Ci0JaDMgPSBzdGF0 ZS0+aFszXTsKLQloNCA9IHN0YXRlLT5oWzRdOwotCi0JaDIgKz0gKGgxID4+IDI2KTsgICAgIGgx ID0gaDEgJiAweDNmZmZmZmY7Ci0JaDMgKz0gKGgyID4+IDI2KTsgICAgIGgyID0gaDIgJiAweDNm ZmZmZmY7Ci0JaDQgKz0gKGgzID4+IDI2KTsgICAgIGgzID0gaDMgJiAweDNmZmZmZmY7Ci0JaDAg Kz0gKGg0ID4+IDI2KSAqIDU7IGg0ID0gaDQgJiAweDNmZmZmZmY7Ci0JaDEgKz0gKGgwID4+IDI2 KTsgICAgIGgwID0gaDAgJiAweDNmZmZmZmY7Ci0KLQkvKiBjb21wdXRlIGggKyAtcCAqLwotCWcw ID0gaDAgKyA1OwotCWcxID0gaDEgKyAoZzAgPj4gMjYpOyAgICAgICAgICAgICBnMCAmPSAweDNm ZmZmZmY7Ci0JZzIgPSBoMiArIChnMSA+PiAyNik7ICAgICAgICAgICAgIGcxICY9IDB4M2ZmZmZm ZjsKLQlnMyA9IGgzICsgKGcyID4+IDI2KTsgICAgICAgICAgICAgZzIgJj0gMHgzZmZmZmZmOwot CWc0ID0gaDQgKyAoZzMgPj4gMjYpIC0gKDEgPDwgMjYpOyBnMyAmPSAweDNmZmZmZmY7Ci0KLQkv KiBzZWxlY3QgaCBpZiBoIDwgcCwgb3IgaCArIC1wIGlmIGggPj0gcCAqLwotCW1hc2sgPSAoZzQg Pj4gKChzaXplb2YodTMyKSAqIDgpIC0gMSkpIC0gMTsKLQlnMCAmPSBtYXNrOwotCWcxICY9IG1h c2s7Ci0JZzIgJj0gbWFzazsKLQlnMyAmPSBtYXNrOwotCWc0ICY9IG1hc2s7Ci0JbWFzayA9IH5t YXNrOwotCWgwID0gKGgwICYgbWFzaykgfCBnMDsKLQloMSA9IChoMSAmIG1hc2spIHwgZzE7Ci0J aDIgPSAoaDIgJiBtYXNrKSB8IGcyOwotCWgzID0gKGgzICYgbWFzaykgfCBnMzsKLQloNCA9ICho NCAmIG1hc2spIHwgZzQ7Ci0KLQkvKiBoID0gaCAlICgyXjEyOCkgKi8KLQlwdXRfdW5hbGlnbmVk X2xlMzIoKGgwID4+ICAwKSB8IChoMSA8PCAyNiksIGRzdCArICAwKTsKLQlwdXRfdW5hbGlnbmVk X2xlMzIoKGgxID4+ICA2KSB8IChoMiA8PCAyMCksIGRzdCArICA0KTsKLQlwdXRfdW5hbGlnbmVk X2xlMzIoKGgyID4+IDEyKSB8IChoMyA8PCAxNCksIGRzdCArICA4KTsKLQlwdXRfdW5hbGlnbmVk X2xlMzIoKGgzID4+IDE4KSB8IChoNCA8PCAgOCksIGRzdCArIDEyKTsKLX0KLUVYUE9SVF9TWU1C T0xfR1BMKHBvbHkxMzA1X2NvcmVfZW1pdCk7Ci0KIGludCBjcnlwdG9fcG9seTEzMDVfZmluYWwo c3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIHU4ICpkc3QpCiB7CiAJc3RydWN0IHBvbHkxMzA1X2Rl c2NfY3R4ICpkY3R4ID0gc2hhc2hfZGVzY19jdHgoZGVzYyk7CkBAIC0yNzQsNyArMTIzLDcgQEAg aW50IGNyeXB0b19wb2x5MTMwNV9maW5hbChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgdTggKmRz dCkKIAkJZGN0eC0+YnVmW2RjdHgtPmJ1ZmxlbisrXSA9IDE7CiAJCW1lbXNldChkY3R4LT5idWYg KyBkY3R4LT5idWZsZW4sIDAsCiAJCSAgICAgICBQT0xZMTMwNV9CTE9DS19TSVpFIC0gZGN0eC0+ YnVmbGVuKTsKLQkJcG9seTEzMDVfYmxvY2tzKGRjdHgsIGRjdHgtPmJ1ZiwgUE9MWTEzMDVfQkxP Q0tfU0laRSwgMCk7CisJCXBvbHkxMzA1X2NvcmVfYmxvY2tzKCZkY3R4LT5oLCAmZGN0eC0+ciwg ZGN0eC0+YnVmLCAxLCAwKTsKIAl9CiAKIAlwb2x5MTMwNV9jb3JlX2VtaXQoJmRjdHgtPmgsIGRp Z2VzdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NyeXB0by9pbnRlcm5hbC9wb2x5MTMwNS5oIGIv aW5jbHVkZS9jcnlwdG8vaW50ZXJuYWwvcG9seTEzMDUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmFlMDQ2NmM0Y2U1OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1 ZGUvY3J5cHRvL2ludGVybmFsL3BvbHkxMzA1LmgKQEAgLTAsMCArMSwzNyBAQAorLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiBDb21tb24gdmFsdWVzIGZvciB0 aGUgUG9seTEzMDUgYWxnb3JpdGhtCisgKi8KKworI2lmbmRlZiBfQ1JZUFRPX0lOVEVSTkFMX1BP TFkxMzA1X0gKKyNkZWZpbmUgX0NSWVBUT19JTlRFUk5BTF9QT0xZMTMwNV9ICisKKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGNyeXB0by9wb2x5MTMwNS5oPgorCitzdHJ1Y3Qg cG9seTEzMDVfZGVzY19jdHggeworCS8qIGtleSAqLworCXN0cnVjdCBwb2x5MTMwNV9rZXkgcjsK KwkvKiBmaW5hbGl6ZSBrZXkgKi8KKwl1MzIgc1s0XTsKKwkvKiBhY2N1bXVsYXRvciAqLworCXN0 cnVjdCBwb2x5MTMwNV9zdGF0ZSBoOworCS8qIHBhcnRpYWwgYnVmZmVyICovCisJdTggYnVmW1BP TFkxMzA1X0JMT0NLX1NJWkVdOworCS8qIGJ5dGVzIHVzZWQgaW4gcGFydGlhbCBidWZmZXIgKi8K Kwl1bnNpZ25lZCBpbnQgYnVmbGVuOworCS8qIHIga2V5IGhhcyBiZWVuIHNldCAqLworCWJvb2wg cnNldDsKKwkvKiBzIGtleSBoYXMgYmVlbiBzZXQgKi8KKwlib29sIHNzZXQ7Cit9OworCisvKiBD cnlwdG8gQVBJIGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoZSBQb2x5MTMwNSBNQUMgKi8KK2ludCBj cnlwdG9fcG9seTEzMDVfaW5pdChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYyk7Cit1bnNpZ25lZCBp bnQgY3J5cHRvX3BvbHkxMzA1X3NldGRlc2NrZXkoc3RydWN0IHBvbHkxMzA1X2Rlc2NfY3R4ICpk Y3R4LAorCQkJCQljb25zdCB1OCAqc3JjLCB1bnNpZ25lZCBpbnQgc3JjbGVuKTsKK2ludCBjcnlw dG9fcG9seTEzMDVfdXBkYXRlKHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLAorCQkJICAgY29uc3Qg dTggKnNyYywgdW5zaWduZWQgaW50IHNyY2xlbik7CitpbnQgY3J5cHRvX3BvbHkxMzA1X2ZpbmFs KHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLCB1OCAqZHN0KTsKKworI2VuZGlmCmRpZmYgLS1naXQg YS9pbmNsdWRlL2NyeXB0by9wb2x5MTMwNS5oIGIvaW5jbHVkZS9jcnlwdG8vcG9seTEzMDUuaApp bmRleCAzNDMxN2VkMjA3MWUuLjgzZTRiNGM2OWE1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jcnlw dG8vcG9seTEzMDUuaAorKysgYi9pbmNsdWRlL2NyeXB0by9wb2x5MTMwNS5oCkBAIC0yMSwyMyAr MjEsNiBAQCBzdHJ1Y3QgcG9seTEzMDVfc3RhdGUgewogCXUzMiBoWzVdOwkvKiBhY2N1bXVsYXRv ciwgYmFzZSAyXjI2ICovCiB9OwogCi1zdHJ1Y3QgcG9seTEzMDVfZGVzY19jdHggewotCS8qIGtl eSAqLwotCXN0cnVjdCBwb2x5MTMwNV9rZXkgcjsKLQkvKiBmaW5hbGl6ZSBrZXkgKi8KLQl1MzIg c1s0XTsKLQkvKiBhY2N1bXVsYXRvciAqLwotCXN0cnVjdCBwb2x5MTMwNV9zdGF0ZSBoOwotCS8q IHBhcnRpYWwgYnVmZmVyICovCi0JdTggYnVmW1BPTFkxMzA1X0JMT0NLX1NJWkVdOwotCS8qIGJ5 dGVzIHVzZWQgaW4gcGFydGlhbCBidWZmZXIgKi8KLQl1bnNpZ25lZCBpbnQgYnVmbGVuOwotCS8q IHIga2V5IGhhcyBiZWVuIHNldCAqLwotCWJvb2wgcnNldDsKLQkvKiBzIGtleSBoYXMgYmVlbiBz ZXQgKi8KLQlib29sIHNzZXQ7Ci19OwotCiAvKgogICogUG9seTEzMDUgY29yZSBmdW5jdGlvbnMu ICBUaGVzZSBpbXBsZW1lbnQgdGhlIM61LWFsbW9zdC3iiIYtdW5pdmVyc2FsIGhhc2gKICAqIGZ1 bmN0aW9uIHVuZGVybHlpbmcgdGhlIFBvbHkxMzA1IE1BQywgaS5lLiB0aGV5IGRvbid0IGFkZCBh biBlbmNyeXB0ZWQgbm9uY2UKQEAgLTQ2LDE5ICsyOSwxMCBAQCBzdHJ1Y3QgcG9seTEzMDVfZGVz Y19jdHggewogdm9pZCBwb2x5MTMwNV9jb3JlX3NldGtleShzdHJ1Y3QgcG9seTEzMDVfa2V5ICpr ZXksIGNvbnN0IHU4ICpyYXdfa2V5KTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2x5MTMwNV9jb3Jl X2luaXQoc3RydWN0IHBvbHkxMzA1X3N0YXRlICpzdGF0ZSkKIHsKLQltZW1zZXQoc3RhdGUtPmgs IDAsIHNpemVvZihzdGF0ZS0+aCkpOworCSpzdGF0ZSA9IChzdHJ1Y3QgcG9seTEzMDVfc3RhdGUp e307CiB9CiB2b2lkIHBvbHkxMzA1X2NvcmVfYmxvY2tzKHN0cnVjdCBwb2x5MTMwNV9zdGF0ZSAq c3RhdGUsCi0JCQkgIGNvbnN0IHN0cnVjdCBwb2x5MTMwNV9rZXkgKmtleSwKLQkJCSAgY29uc3Qg dm9pZCAqc3JjLCB1bnNpZ25lZCBpbnQgbmJsb2Nrcyk7CisJCQkgIGNvbnN0IHN0cnVjdCBwb2x5 MTMwNV9rZXkgKmtleSwgY29uc3Qgdm9pZCAqc3JjLAorCQkJICB1bnNpZ25lZCBpbnQgbmJsb2Nr cywgdTMyIGhpYml0KTsKIHZvaWQgcG9seTEzMDVfY29yZV9lbWl0KGNvbnN0IHN0cnVjdCBwb2x5 MTMwNV9zdGF0ZSAqc3RhdGUsIHZvaWQgKmRzdCk7Ci0KLS8qIENyeXB0byBBUEkgaGVscGVyIGZ1 bmN0aW9ucyBmb3IgdGhlIFBvbHkxMzA1IE1BQyAqLwotaW50IGNyeXB0b19wb2x5MTMwNV9pbml0 KHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjKTsKLXVuc2lnbmVkIGludCBjcnlwdG9fcG9seTEzMDVf c2V0ZGVzY2tleShzdHJ1Y3QgcG9seTEzMDVfZGVzY19jdHggKmRjdHgsCi0JCQkJCWNvbnN0IHU4 ICpzcmMsIHVuc2lnbmVkIGludCBzcmNsZW4pOwotaW50IGNyeXB0b19wb2x5MTMwNV91cGRhdGUo c3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsCi0JCQkgICBjb25zdCB1OCAqc3JjLCB1bnNpZ25lZCBp bnQgc3JjbGVuKTsKLWludCBjcnlwdG9fcG9seTEzMDVfZmluYWwoc3RydWN0IHNoYXNoX2Rlc2Mg KmRlc2MsIHU4ICpkc3QpOwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi9jcnlwdG8vTWFrZWZp bGUgYi9saWIvY3J5cHRvL01ha2VmaWxlCmluZGV4IDI0ZGFkMDU4ZjJhZS4uNmJmOGEwYTRlZTBl IDEwMDY0NAotLS0gYS9saWIvY3J5cHRvL01ha2VmaWxlCisrKyBiL2xpYi9jcnlwdG8vTWFrZWZp bGUKQEAgLTEyLDUgKzEyLDggQEAgbGliYXJjNC15CQkJCQk6PSBhcmM0Lm8KIG9iai0kKENPTkZJ R19DUllQVE9fTElCX0RFUykJCQkrPSBsaWJkZXMubwogbGliZGVzLXkJCQkJCTo9IGRlcy5vCiAK K29iai0kKENPTkZJR19DUllQVE9fTElCX1BPTFkxMzA1KQkJKz0gbGlicG9seTEzMDUubworbGli cG9seTEzMDUteQkJCQkJOj0gcG9seTEzMDUubworCiBvYmotJChDT05GSUdfQ1JZUFRPX0xJQl9T SEEyNTYpCQkJKz0gbGlic2hhMjU2Lm8KIGxpYnNoYTI1Ni15CQkJCQk6PSBzaGEyNTYubwpkaWZm IC0tZ2l0IGEvbGliL2NyeXB0by9wb2x5MTMwNS5jIGIvbGliL2NyeXB0by9wb2x5MTMwNS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWJlNmZjY2Y3YjljCi0tLSAv ZGV2L251bGwKKysrIGIvbGliL2NyeXB0by9wb2x5MTMwNS5jCkBAIC0wLDAgKzEsMTU4IEBACisv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIFBvbHkx MzA1IGF1dGhlbnRpY2F0b3IgYWxnb3JpdGhtLCBSRkM3NTM5CisgKgorICogQ29weXJpZ2h0IChD KSAyMDE1IE1hcnRpbiBXaWxsaQorICoKKyAqIEJhc2VkIG9uIHB1YmxpYyBkb21haW4gY29kZSBi eSBBbmRyZXcgTW9vbiBhbmQgRGFuaWVsIEouIEJlcm5zdGVpbi4KKyAqLworCisjaW5jbHVkZSA8 Y3J5cHRvL3BvbHkxMzA1Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorCitzdGF0aWMgaW5s aW5lIHU2NCBtbHQodTY0IGEsIHU2NCBiKQoreworCXJldHVybiBhICogYjsKK30KKworc3RhdGlj IGlubGluZSB1MzIgc3IodTY0IHYsIHVfY2hhciBuKQoreworCXJldHVybiB2ID4+IG47Cit9CisK K3N0YXRpYyBpbmxpbmUgdTMyIGFuZCh1MzIgdiwgdTMyIG1hc2spCit7CisJcmV0dXJuIHYgJiBt YXNrOworfQorCit2b2lkIHBvbHkxMzA1X2NvcmVfc2V0a2V5KHN0cnVjdCBwb2x5MTMwNV9rZXkg KmtleSwgY29uc3QgdTggKnJhd19rZXkpCit7CisJLyogciAmPSAweGZmZmZmZmMwZmZmZmZmYzBm ZmZmZmZjMGZmZmZmZmYgKi8KKwlrZXktPnJbMF0gPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHJhd19r ZXkgKyAgMCkgPj4gMCkgJiAweDNmZmZmZmY7CisJa2V5LT5yWzFdID0gKGdldF91bmFsaWduZWRf bGUzMihyYXdfa2V5ICsgIDMpID4+IDIpICYgMHgzZmZmZjAzOworCWtleS0+clsyXSA9IChnZXRf dW5hbGlnbmVkX2xlMzIocmF3X2tleSArICA2KSA+PiA0KSAmIDB4M2ZmYzBmZjsKKwlrZXktPnJb M10gPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHJhd19rZXkgKyAgOSkgPj4gNikgJiAweDNmMDNmZmY7 CisJa2V5LT5yWzRdID0gKGdldF91bmFsaWduZWRfbGUzMihyYXdfa2V5ICsgMTIpID4+IDgpICYg MHgwMGZmZmZmOworfQorRVhQT1JUX1NZTUJPTF9HUEwocG9seTEzMDVfY29yZV9zZXRrZXkpOwor Cit2b2lkIHBvbHkxMzA1X2NvcmVfYmxvY2tzKHN0cnVjdCBwb2x5MTMwNV9zdGF0ZSAqc3RhdGUs CisJCQkgIGNvbnN0IHN0cnVjdCBwb2x5MTMwNV9rZXkgKmtleSwgY29uc3Qgdm9pZCAqc3JjLAor CQkJICB1bnNpZ25lZCBpbnQgbmJsb2NrcywgdTMyIGhpYml0KQoreworCXUzMiByMCwgcjEsIHIy LCByMywgcjQ7CisJdTMyIHMxLCBzMiwgczMsIHM0OworCXUzMiBoMCwgaDEsIGgyLCBoMywgaDQ7 CisJdTY0IGQwLCBkMSwgZDIsIGQzLCBkNDsKKworCWlmICghbmJsb2NrcykKKwkJcmV0dXJuOwor CisJcjAgPSBrZXktPnJbMF07CisJcjEgPSBrZXktPnJbMV07CisJcjIgPSBrZXktPnJbMl07CisJ cjMgPSBrZXktPnJbM107CisJcjQgPSBrZXktPnJbNF07CisKKwlzMSA9IHIxICogNTsKKwlzMiA9 IHIyICogNTsKKwlzMyA9IHIzICogNTsKKwlzNCA9IHI0ICogNTsKKworCWgwID0gc3RhdGUtPmhb MF07CisJaDEgPSBzdGF0ZS0+aFsxXTsKKwloMiA9IHN0YXRlLT5oWzJdOworCWgzID0gc3RhdGUt PmhbM107CisJaDQgPSBzdGF0ZS0+aFs0XTsKKworCWRvIHsKKwkJLyogaCArPSBtW2ldICovCisJ CWgwICs9IChnZXRfdW5hbGlnbmVkX2xlMzIoc3JjICsgIDApID4+IDApICYgMHgzZmZmZmZmOwor CQloMSArPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHNyYyArICAzKSA+PiAyKSAmIDB4M2ZmZmZmZjsK KwkJaDIgKz0gKGdldF91bmFsaWduZWRfbGUzMihzcmMgKyAgNikgPj4gNCkgJiAweDNmZmZmZmY7 CisJCWgzICs9IChnZXRfdW5hbGlnbmVkX2xlMzIoc3JjICsgIDkpID4+IDYpICYgMHgzZmZmZmZm OworCQloNCArPSAoZ2V0X3VuYWxpZ25lZF9sZTMyKHNyYyArIDEyKSA+PiA4KSB8IChoaWJpdCA8 PCAyNCk7CisKKwkJLyogaCAqPSByICovCisJCWQwID0gbWx0KGgwLCByMCkgKyBtbHQoaDEsIHM0 KSArIG1sdChoMiwgczMpICsKKwkJICAgICBtbHQoaDMsIHMyKSArIG1sdChoNCwgczEpOworCQlk MSA9IG1sdChoMCwgcjEpICsgbWx0KGgxLCByMCkgKyBtbHQoaDIsIHM0KSArCisJCSAgICAgbWx0 KGgzLCBzMykgKyBtbHQoaDQsIHMyKTsKKwkJZDIgPSBtbHQoaDAsIHIyKSArIG1sdChoMSwgcjEp ICsgbWx0KGgyLCByMCkgKworCQkgICAgIG1sdChoMywgczQpICsgbWx0KGg0LCBzMyk7CisJCWQz ID0gbWx0KGgwLCByMykgKyBtbHQoaDEsIHIyKSArIG1sdChoMiwgcjEpICsKKwkJICAgICBtbHQo aDMsIHIwKSArIG1sdChoNCwgczQpOworCQlkNCA9IG1sdChoMCwgcjQpICsgbWx0KGgxLCByMykg KyBtbHQoaDIsIHIyKSArCisJCSAgICAgbWx0KGgzLCByMSkgKyBtbHQoaDQsIHIwKTsKKworCQkv KiAocGFydGlhbCkgaCAlPSBwICovCisJCWQxICs9IHNyKGQwLCAyNik7ICAgICBoMCA9IGFuZChk MCwgMHgzZmZmZmZmKTsKKwkJZDIgKz0gc3IoZDEsIDI2KTsgICAgIGgxID0gYW5kKGQxLCAweDNm ZmZmZmYpOworCQlkMyArPSBzcihkMiwgMjYpOyAgICAgaDIgPSBhbmQoZDIsIDB4M2ZmZmZmZik7 CisJCWQ0ICs9IHNyKGQzLCAyNik7ICAgICBoMyA9IGFuZChkMywgMHgzZmZmZmZmKTsKKwkJaDAg Kz0gc3IoZDQsIDI2KSAqIDU7IGg0ID0gYW5kKGQ0LCAweDNmZmZmZmYpOworCQloMSArPSBoMCA+ PiAyNjsgICAgICAgaDAgPSBoMCAmIDB4M2ZmZmZmZjsKKworCQlzcmMgKz0gUE9MWTEzMDVfQkxP Q0tfU0laRTsKKwl9IHdoaWxlICgtLW5ibG9ja3MpOworCisJc3RhdGUtPmhbMF0gPSBoMDsKKwlz dGF0ZS0+aFsxXSA9IGgxOworCXN0YXRlLT5oWzJdID0gaDI7CisJc3RhdGUtPmhbM10gPSBoMzsK KwlzdGF0ZS0+aFs0XSA9IGg0OworfQorRVhQT1JUX1NZTUJPTF9HUEwocG9seTEzMDVfY29yZV9i bG9ja3MpOworCit2b2lkIHBvbHkxMzA1X2NvcmVfZW1pdChjb25zdCBzdHJ1Y3QgcG9seTEzMDVf c3RhdGUgKnN0YXRlLCB2b2lkICpkc3QpCit7CisJdTMyIGgwLCBoMSwgaDIsIGgzLCBoNDsKKwl1 MzIgZzAsIGcxLCBnMiwgZzMsIGc0OworCXUzMiBtYXNrOworCisJLyogZnVsbHkgY2FycnkgaCAq LworCWgwID0gc3RhdGUtPmhbMF07CisJaDEgPSBzdGF0ZS0+aFsxXTsKKwloMiA9IHN0YXRlLT5o WzJdOworCWgzID0gc3RhdGUtPmhbM107CisJaDQgPSBzdGF0ZS0+aFs0XTsKKworCWgyICs9ICho MSA+PiAyNik7ICAgICBoMSA9IGgxICYgMHgzZmZmZmZmOworCWgzICs9IChoMiA+PiAyNik7ICAg ICBoMiA9IGgyICYgMHgzZmZmZmZmOworCWg0ICs9IChoMyA+PiAyNik7ICAgICBoMyA9IGgzICYg MHgzZmZmZmZmOworCWgwICs9IChoNCA+PiAyNikgKiA1OyBoNCA9IGg0ICYgMHgzZmZmZmZmOwor CWgxICs9IChoMCA+PiAyNik7ICAgICBoMCA9IGgwICYgMHgzZmZmZmZmOworCisJLyogY29tcHV0 ZSBoICsgLXAgKi8KKwlnMCA9IGgwICsgNTsKKwlnMSA9IGgxICsgKGcwID4+IDI2KTsgICAgICAg ICAgICAgZzAgJj0gMHgzZmZmZmZmOworCWcyID0gaDIgKyAoZzEgPj4gMjYpOyAgICAgICAgICAg ICBnMSAmPSAweDNmZmZmZmY7CisJZzMgPSBoMyArIChnMiA+PiAyNik7ICAgICAgICAgICAgIGcy ICY9IDB4M2ZmZmZmZjsKKwlnNCA9IGg0ICsgKGczID4+IDI2KSAtICgxIDw8IDI2KTsgZzMgJj0g MHgzZmZmZmZmOworCisJLyogc2VsZWN0IGggaWYgaCA8IHAsIG9yIGggKyAtcCBpZiBoID49IHAg Ki8KKwltYXNrID0gKGc0ID4+ICgoc2l6ZW9mKHUzMikgKiA4KSAtIDEpKSAtIDE7CisJZzAgJj0g bWFzazsKKwlnMSAmPSBtYXNrOworCWcyICY9IG1hc2s7CisJZzMgJj0gbWFzazsKKwlnNCAmPSBt YXNrOworCW1hc2sgPSB+bWFzazsKKwloMCA9IChoMCAmIG1hc2spIHwgZzA7CisJaDEgPSAoaDEg JiBtYXNrKSB8IGcxOworCWgyID0gKGgyICYgbWFzaykgfCBnMjsKKwloMyA9IChoMyAmIG1hc2sp IHwgZzM7CisJaDQgPSAoaDQgJiBtYXNrKSB8IGc0OworCisJLyogaCA9IGggJSAoMl4xMjgpICov CisJcHV0X3VuYWxpZ25lZF9sZTMyKChoMCA+PiAgMCkgfCAoaDEgPDwgMjYpLCBkc3QgKyAgMCk7 CisJcHV0X3VuYWxpZ25lZF9sZTMyKChoMSA+PiAgNikgfCAoaDIgPDwgMjApLCBkc3QgKyAgNCk7 CisJcHV0X3VuYWxpZ25lZF9sZTMyKChoMiA+PiAxMikgfCAoaDMgPDwgMTQpLCBkc3QgKyAgOCk7 CisJcHV0X3VuYWxpZ25lZF9sZTMyKChoMyA+PiAxOCkgfCAoaDQgPDwgIDgpLCBkc3QgKyAxMik7 Cit9CitFWFBPUlRfU1lNQk9MX0dQTChwb2x5MTMwNV9jb3JlX2VtaXQpOworCitNT0RVTEVfTElD RU5TRSgiR1BMIik7CitNT0RVTEVfQVVUSE9SKCJNYXJ0aW4gV2lsbGkgPG1hcnRpbkBzdHJvbmdz d2FuLm9yZz4iKTsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK