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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,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 90DEDC352A4 for ; Tue, 11 Feb 2020 01:13:40 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 4C61020708 for ; Tue, 11 Feb 2020 01:13:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="XBJhUc/H" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C61020708 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42001 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1K7P-0001ky-EZ for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:13:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33039) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1JcR-0001qs-8R for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1JcO-000831-6V for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:39 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:59203) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1JcN-0004tJ-SQ for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381695; x=1612917695; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zGrOCnakqK4iZMo7KgRUZegj5oKFSJVoGlkBBf7b23Y=; b=XBJhUc/HwN68gvrOXuP51tT57qhA/rjuiU3GOnNj7QLJuW6FDowYWHSi pNsuuqgG/P1smARRGvKc87nWSsvBMA3hTwIcJn8MZU0vwZO50WnIprzal Lq2ggk98MRViYQHNGNEaNjICYhSf1CdPy5fwMzigMchFPcAqTCQZoOkV8 c=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-02.qualcomm.com with ESMTP; 10 Feb 2020 16:41:01 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 10 Feb 2020 16:41:01 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id DAE1A1B48; Mon, 10 Feb 2020 18:41:00 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 37/66] Hexagon TCG generation helpers - step 5 Date: Mon, 10 Feb 2020 18:40:15 -0600 Message-Id: <1581381644-13678-38-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> References: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.39 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SGVscGVycyBmb3IgaW5zdHJ1Y3Rpb25zIG92ZXJyaWRlbiBmb3Igb3B0aW1pemF0aW9uCgpTaWdu ZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFy Z2V0L2hleGFnb24vZ2VucHRyX2hlbHBlcnMuaCB8IDMxNCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzE0IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9nZW5wdHJfaGVscGVycy5oIGIvdGFyZ2V0L2hleGFn b24vZ2VucHRyX2hlbHBlcnMuaAppbmRleCA4NWI0NDlhLi5iOGJkY2Y0IDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9nZW5wdHJfaGVscGVycy5oCisrKyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0 cl9oZWxwZXJzLmgKQEAgLTUxNiw0ICs1MTYsMzE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5f Y29uZF9yZXR1cm4oVENHdiBwcmVkLCBUQ0d2IGFkZHIpCiAgICAgdGNnX3RlbXBfZnJlZSh6ZXJv KTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGdlbl9sb29wMHIoVENHdiBSc1YsIGludCByaVYs IGluc25fdCAqaW5zbikKK3sKKyAgICBUQ0d2IHRtcCA9IHRjZ190ZW1wX25ldygpOworICAgIGZJ TU1FWFQocmlWKTsKKyAgICBmUENBTElHTihyaVYpOworICAgIC8qIGZXUklURV9MT09QX1JFR1Mw KCBmUkVBRF9QQygpK3JpViwgUnNWKTsgKi8KKyAgICB0Y2dfZ2VuX2FkZGlfdGwodG1wLCBoZXhf Z3ByW0hFWF9SRUdfUENdLCByaVYpOworICAgIGdlbl9sb2dfcmVnX3dyaXRlKEhFWF9SRUdfTEMw LCBSc1YsIGluc24tPnNsb3QsIDApOworICAgIGdlbl9sb2dfcmVnX3dyaXRlKEhFWF9SRUdfU0Ew LCB0bXAsIGluc24tPnNsb3QsIDApOworICAgIGZTRVRfTFBDRkcoMCk7CisgICAgdGNnX3RlbXBf ZnJlZSh0bXApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvb3AxcihUQ0d2IFJzViwg aW50IHJpViwgaW5zbl90ICppbnNuKQoreworICAgIFRDR3YgdG1wID0gdGNnX3RlbXBfbmV3KCk7 CisgICAgZklNTUVYVChyaVYpOworICAgIGZQQ0FMSUdOKHJpVik7CisgICAgLyogZldSSVRFX0xP T1BfUkVHUzEoIGZSRUFEX1BDKCkrcmlWLCBSc1YpOyAqLworICAgIHRjZ19nZW5fYWRkaV90bCh0 bXAsIGhleF9ncHJbSEVYX1JFR19QQ10sIHJpVik7CisgICAgZ2VuX2xvZ19yZWdfd3JpdGUoSEVY X1JFR19MQzEsIFJzViwgaW5zbi0+c2xvdCwgMCk7CisgICAgZ2VuX2xvZ19yZWdfd3JpdGUoSEVY X1JFR19TQTEsIHRtcCwgaW5zbi0+c2xvdCwgMCk7CisgICAgdGNnX3RlbXBfZnJlZSh0bXApOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2NvbXBhcmUoVENHQ29uZCBjb25kLCBUQ0d2IHJl cywgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCit7CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3RfdGwo MHhmZik7CisgICAgVENHdiB6ZXJvID0gdGNnX2NvbnN0X3RsKDApOworCisgICAgdGNnX2dlbl9t b3Zjb25kX3RsKGNvbmQsIHJlcywgYXJnMSwgYXJnMiwgb25lLCB6ZXJvKTsKKworICAgIHRjZ190 ZW1wX2ZyZWUob25lKTsKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX2NvbXBhcmVpKFRDR0NvbmQgY29uZCwgVENHdiByZXMsIFRDR3YgYXJnMSwg aW50IGFyZzIpCit7CisgICAgVENHdiB0bXAgPSB0Y2dfY29uc3RfdGwoYXJnMik7CisgICAgZ2Vu X2NvbXBhcmUoY29uZCwgcmVzLCBhcmcxLCB0bXApOworICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9jb21wYXJlX2k2NChUQ0dDb25kIGNvbmQsIFRD R3YgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2X2k2NCBhcmcx LCBUQ0d2X2k2NCBhcmcyKQoreworICAgIFRDR3ZfaTY0IG9uZSA9IHRjZ19jb25zdF9pNjQoMHhm Zik7CisgICAgVENHdl9pNjQgemVybyA9IHRjZ19jb25zdF9pNjQoMCk7CisgICAgVENHdl9pNjQg dGVtcCA9IHRjZ190ZW1wX25ld19pNjQoKTsKKworICAgIHRjZ19nZW5fbW92Y29uZF9pNjQoY29u ZCwgdGVtcCwgYXJnMSwgYXJnMiwgb25lLCB6ZXJvKTsKKyAgICB0Y2dfZ2VuX2V4dHJsX2k2NF9p MzIocmVzLCB0ZW1wKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwocmVzLCByZXMsIDB4ZmYpOworCisg ICAgdGNnX3RlbXBfZnJlZV9pNjQob25lKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2k2NCh6ZXJvKTsK KyAgICB0Y2dfdGVtcF9mcmVlX2k2NCh0ZW1wKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdl bl9jbXBuZF9jbXBfam1wKGludCBwbnVtLCBUQ0dDb25kIGNvbmQsIGJvb2wgc2Vuc2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHdiBhcmcxLCBUQ0d2IGFyZzIsIGlu dCBwY19vZmYpCit7CisgICAgVENHdiBuZXdfcGMgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2 IHByZWQgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7 CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3RfdGwoMSk7CisKKyAgICB0Y2dfZ2VuX2FkZGlfdGwo bmV3X3BjLCBoZXhfZ3ByW0hFWF9SRUdfUENdLCBwY19vZmYpOworICAgIGdlbl9jb21wYXJlKGNv bmQsIHByZWQsIGFyZzEsIGFyZzIpOworICAgIGdlbl9sb2dfcHJlZF93cml0ZShwbnVtLCBwcmVk KTsKKyAgICBpZiAoIXNlbnNlKSB7CisgICAgICAgIHRjZ19nZW5feG9yaV90bChwcmVkLCBwcmVk LCAweGZmKTsKKyAgICB9CisKKyAgICAvKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnJhbmNoZXMg aW4gYSBwYWNrZXQsIGlnbm9yZSB0aGUgc2Vjb25kIG9uZSAqLworICAgIHRjZ19nZW5fbW92Y29u ZF90bChUQ0dfQ09ORF9ORSwgcHJlZCwgaGV4X2JyYW5jaF90YWtlbiwgemVybywgemVybywgcHJl ZCk7CisKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfTkUsIGhleF9uZXh0X1BDLCBw cmVkLCB6ZXJvLAorICAgICAgICAgICAgICAgICAgICAgICBuZXdfcGMsIGhleF9uZXh0X1BDKTsK KyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfTkUsIGhleF9icmFuY2hfdGFrZW4sIHBy ZWQsIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIG9uZSwgaGV4X2JyYW5jaF90YWtlbik7 CisKKyAgICB0Y2dfdGVtcF9mcmVlKG5ld19wYyk7CisgICAgdGNnX3RlbXBfZnJlZShwcmVkKTsK KyAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGdlbl9jbXBuZF9jbXBpX2ptcChpbnQgcG51bSwgVENHQ29uZCBj b25kLCBib29sIHNlbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU Q0d2IGFyZzEsIGludCBhcmcyLCBpbnQgcGNfb2ZmKQoreworICAgIFRDR3YgdG1wID0gdGNnX2Nv bnN0X3RsKGFyZzIpOworICAgIGdlbl9jbXBuZF9jbXBfam1wKHBudW0sIGNvbmQsIHNlbnNlLCBh cmcxLCB0bXAsIHBjX29mZik7CisgICAgdGNnX3RlbXBfZnJlZSh0bXApOworCit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBnZW5fY21wbmRfY21wX24xX2ptcChpbnQgcG51bSwgVENHQ29uZCBjb25k LCBib29sIHNlbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R3YgYXJnLCBpbnQgcGNfb2ZmKQoreworICAgIGdlbl9jbXBuZF9jbXBpX2ptcChwbnVtLCBjb25k LCBzZW5zZSwgYXJnLCAtMSwgcGNfb2ZmKTsKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgZ2Vu X2p1bXAoaW50IHBjX29mZikKK3sKKyAgICBUQ0d2IG5ld19wYyA9IHRjZ190ZW1wX25ldygpOwor ICAgIHRjZ19nZW5fYWRkaV90bChuZXdfcGMsIGhleF9ncHJbSEVYX1JFR19QQ10sIHBjX29mZik7 CisgICAgZ2VuX3dyaXRlX25ld19wYyhuZXdfcGMpOworICAgIHRjZ190ZW1wX2ZyZWUobmV3X3Bj KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9jb25kX2p1bXByKFRDR3YgcHJlZCwgVENH diBkc3RfcGMpCit7CisgICAgVENHdiB6ZXJvID0gdGNnX2NvbnN0X3RsKDApOworICAgIFRDR3Yg b25lID0gdGNnX2NvbnN0X3RsKDEpOworICAgIFRDR3YgbmV3X3BjID0gdGNnX3RlbXBfbmV3KCk7 CisKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfRVEsIG5ld19wYywgcHJlZCwgemVy bywgaGV4X25leHRfUEMsIGRzdF9wYyk7CisKKyAgICAvKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUg anVtcHMgaW4gYSBwYWNrZXQsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiAqLworICAgIHRj Z19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9ORSwgaGV4X25leHRfUEMsIGhleF9icmFuY2hfdGFr ZW4sIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIGhleF9uZXh0X1BDLCBuZXdfcGMpOwor ICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X2JyYW5jaF90YWtlbiwgcHJl ZCwgemVybywKKyAgICAgICAgICAgICAgICAgICAgICAgaGV4X2JyYW5jaF90YWtlbiwgb25lKTsK KworICAgIHRjZ190ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShvbmUpOworICAg IHRjZ190ZW1wX2ZyZWUobmV3X3BjKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9jb25k X2p1bXAoVENHdiBwcmVkLCBpbnQgcGNfb2ZmKQoreworICAgIFRDR3YgbmV3X3BjID0gdGNnX3Rl bXBfbmV3KCk7CisKKyAgICB0Y2dfZ2VuX2FkZGlfdGwobmV3X3BjLCBoZXhfZ3ByW0hFWF9SRUdf UENdLCBwY19vZmYpOworICAgIGdlbl9jb25kX2p1bXByKHByZWQsIG5ld19wYyk7CisKKyAgICB0 Y2dfdGVtcF9mcmVlKG5ld19wYyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fY2FsbChp bnQgcGNfb2ZmKQoreworICAgIGdlbl9sb2dfcmVnX3dyaXRlKEhFWF9SRUdfTFIsIGhleF9uZXh0 X1BDLCA0LCBmYWxzZSk7CisgICAgZ2VuX2p1bXAocGNfb2ZmKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9jYWxscihUQ0d2IG5ld19wYykKK3sKKyAgICBnZW5fbG9nX3JlZ193cml0ZShI RVhfUkVHX0xSLCBoZXhfbmV4dF9QQywgNCwgZmFsc2UpOworICAgIGdlbl93cml0ZV9uZXdfcGMo bmV3X3BjKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9lbmRsb29wMCh2b2lkKQorewor ICAgIFRDR3YgbHBjZmcgPSB0Y2dfdGVtcF9sb2NhbF9uZXcoKTsKKworICAgIEdFVF9VU1JfRklF TEQoVVNSX0xQQ0ZHLCBscGNmZyk7CisKKyAgICAvKgorICAgICAqICAgIGlmIChscGNmZyA9PSAx KSB7CisgICAgICogICAgICAgIGhleF9uZXdfcHJlZF92YWx1ZVszXSA9IDB4ZmY7CisgICAgICog ICAgICAgIGhleF9wcmVkX3dyaXR0ZW5bM10gPSAxOworICAgICAqICAgIH0KKyAgICAgKi8KKyAg ICBUQ0dMYWJlbCAqbGFiZWwxID0gZ2VuX25ld19sYWJlbCgpOworICAgIHRjZ19nZW5fYnJjb25k aV90bChUQ0dfQ09ORF9ORSwgbHBjZmcsIDEsIGxhYmVsMSk7CisgICAgeworICAgICAgICB0Y2df Z2VuX21vdmlfdGwoaGV4X25ld19wcmVkX3ZhbHVlWzNdLCAweGZmKTsKKyAgICAgICAgdGNnX2dl bl9tb3ZpX3RsKGhleF9wcmVkX3dyaXR0ZW5bM10sIDEpOworICAgIH0KKyAgICBnZW5fc2V0X2xh YmVsKGxhYmVsMSk7CisKKyAgICAvKgorICAgICAqICAgIGlmIChscGNmZykgeworICAgICAqICAg ICAgICBTRVRfVVNSX0ZJRUxEKFVTUl9MUENGRywgbHBjZmcgLSAxKTsKKyAgICAgKiAgICB9Cisg ICAgICovCisgICAgVENHTGFiZWwgKmxhYmVsMiA9IGdlbl9uZXdfbGFiZWwoKTsKKyAgICB0Y2df Z2VuX2JyY29uZGlfdGwoVENHX0NPTkRfRVEsIGxwY2ZnLCAwLCBsYWJlbDIpOworICAgIHsKKyAg ICAgICAgdGNnX2dlbl9zdWJpX3RsKGxwY2ZnLCBscGNmZywgMSk7CisgICAgICAgIFNFVF9VU1Jf RklFTEQoVVNSX0xQQ0ZHLCBscGNmZyk7CisgICAgfQorICAgIGdlbl9zZXRfbGFiZWwobGFiZWwy KTsKKworICAgIC8qCisgICAgICogICAgaWYgKGhleF9ncHJbSEVYX1JFR19MQzBdID4gMSkgewor ICAgICAqICAgICAgICBoZXhfbmV4dF9QQyA9IGhleF9ncHJbSEVYX1JFR19TQTBdOworICAgICAq ICAgICAgICBoZXhfYnJhbmNoX3Rha2VuID0gMTsKKyAgICAgKiAgICAgICAgaGV4X2dwcltIRVhf UkVHX0xDMF0gPSBoZXhfZ3ByW0hFWF9SRUdfTEMwXSAtIDE7CisgICAgICogICAgfQorICAgICAq LworICAgIFRDR0xhYmVsICpsYWJlbDMgPSBnZW5fbmV3X2xhYmVsKCk7CisgICAgdGNnX2dlbl9i cmNvbmRpX3RsKFRDR19DT05EX0xFVSwgaGV4X2dwcltIRVhfUkVHX0xDMF0sIDEsIGxhYmVsMyk7 CisgICAgeworICAgICAgICB0Y2dfZ2VuX21vdl90bChoZXhfbmV4dF9QQywgaGV4X2dwcltIRVhf UkVHX1NBMF0pOworICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X2JyYW5jaF90YWtlbiwgMSk7 CisgICAgICAgIFRDR3YgbGMwID0gdGNnX3RlbXBfbG9jYWxfbmV3KCk7CisgICAgICAgIHRjZ19n ZW5fbW92X3RsKGxjMCwgaGV4X2dwcltIRVhfUkVHX0xDMF0pOworICAgICAgICB0Y2dfZ2VuX3N1 YmlfdGwobGMwLCBsYzAsIDEpOworICAgICAgICB0Y2dfZ2VuX21vdl90bChoZXhfbmV3X3ZhbHVl W0hFWF9SRUdfTEMwXSwgbGMwKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShsYzApOworICAgIH0K KyAgICBnZW5fc2V0X2xhYmVsKGxhYmVsMyk7CisKKyAgICB0Y2dfdGVtcF9mcmVlKGxwY2ZnKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9lbmRsb29wMSh2b2lkKQoreworICAgIC8qCisg ICAgICogICAgaWYgKGhleF9ncHJbSEVYX1JFR19MQzFdID4gMSkgeworICAgICAqICAgICAgICBo ZXhfbmV4dF9QQyA9IGhleF9ncHJbSEVYX1JFR19TQTFdOworICAgICAqICAgICAgICBoZXhfYnJh bmNoX3Rha2VuID0gMTsKKyAgICAgKiAgICAgICAgaGV4X2dwcltIRVhfUkVHX0xDMV0gPSBoZXhf Z3ByW0hFWF9SRUdfTEMxXSAtIDE7CisgICAgICogICAgfQorICAgICAqLworICAgIFRDR0xhYmVs ICpsYWJlbCA9IGdlbl9uZXdfbGFiZWwoKTsKKyAgICB0Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NP TkRfTEVVLCBoZXhfZ3ByW0hFWF9SRUdfTEMxXSwgMSwgbGFiZWwpOworICAgIHsKKyAgICAgICAg dGNnX2dlbl9tb3ZfdGwoaGV4X25leHRfUEMsIGhleF9ncHJbSEVYX1JFR19TQTFdKTsKKyAgICAg ICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9icmFuY2hfdGFrZW4sIDEpOworICAgICAgICBUQ0d2IGxj MSA9IHRjZ190ZW1wX2xvY2FsX25ldygpOworICAgICAgICB0Y2dfZ2VuX21vdl90bChsYzEsIGhl eF9ncHJbSEVYX1JFR19MQzFdKTsKKyAgICAgICAgdGNnX2dlbl9zdWJpX3RsKGxjMSwgbGMxLCAx KTsKKyAgICAgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X25ld192YWx1ZVtIRVhfUkVHX0xDMV0sIGxj MSk7CisgICAgICAgIHRjZ190ZW1wX2ZyZWUobGMxKTsKKyAgICB9CisgICAgZ2VuX3NldF9sYWJl bChsYWJlbCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fYXNoaWZ0cl80XzRzKFRDR3Yg ZHN0LCBUQ0d2IHNyYywgaW50MzJfdCBzaGlmdF9hbXQpCit7CisgICAgdGNnX2dlbl9zYXJpX3Rs KGRzdCwgc3JjLCBzaGlmdF9hbXQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2FzaGlm dGxfNF80cyhUQ0d2IGRzdCwgVENHdiBzcmMsIGludDMyX3Qgc2hpZnRfYW10KQoreworICAgIGlm IChzaGlmdF9hbXQgPj0gNjQpIHsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGRzdCwgMCk7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgdGNnX2dlbl9zaGxpX3RsKGRzdCwgc3JjLCBzaGlmdF9hbXQp OworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9jbXBfanVtcG52KFRDR0NvbmQg Y29uZCwgaW50IHJudW0sIFRDR3Ygc3JjLCBpbnQgcGNfb2ZmKQoreworICAgIFRDR3YgcHJlZCA9 IHRjZ190ZW1wX25ldygpOworICAgIHRjZ19nZW5fc2V0Y29uZF90bChjb25kLCBwcmVkLCBoZXhf bmV3X3ZhbHVlW3JudW1dLCBzcmMpOworICAgIGdlbl9jb25kX2p1bXAocHJlZCwgcGNfb2ZmKTsK KyAgICB0Y2dfdGVtcF9mcmVlKHByZWQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2Nt cGlfanVtcG52KFRDR0NvbmQgY29uZCwgaW50IHJudW0sIGludCBzcmMsIGludCBwY19vZmYpCit7 CisgICAgVENHdiBwcmVkID0gdGNnX3RlbXBfbmV3KCk7CisgICAgdGNnX2dlbl9zZXRjb25kaV90 bChjb25kLCBwcmVkLCBoZXhfbmV3X3ZhbHVlW3JudW1dLCBzcmMpOworICAgIGdlbl9jb25kX2p1 bXAocHJlZCwgcGNfb2ZmKTsKKyAgICB0Y2dfdGVtcF9mcmVlKHByZWQpOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgZ2VuX2FzbF9yX3Jfb3IoVENHdiBSeFYsIFRDR3YgUnNWLCBUQ0d2IFJ0VikK K3sKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7CisgICAgVENHdiBzaGlmdF9hbXQg PSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2X2k2NCBzaGlmdF9hbXRfaTY0ID0gdGNnX3RlbXBf bmV3X2k2NCgpOworICAgIFRDR3ZfaTY0IHNoaWZ0X2xlZnRfdmFsX2k2NCA9IHRjZ190ZW1wX25l d19pNjQoKTsKKyAgICBUQ0d2IHNoaWZ0X2xlZnRfdmFsID0gdGNnX3RlbXBfbmV3KCk7CisgICAg VENHdl9pNjQgc2hpZnRfcmlnaHRfdmFsX2k2NCA9IHRjZ190ZW1wX25ld19pNjQoKTsKKyAgICBU Q0d2IHNoaWZ0X3JpZ2h0X3ZhbCA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3Ygb3JfdmFsID0g dGNnX3RlbXBfbmV3KCk7CisKKyAgICAvKiBTaWduIGV4dGVuZCA3LT4zMiBiaXRzICovCisgICAg dGNnX2dlbl9zaGxpX3RsKHNoaWZ0X2FtdCwgUnRWLCAzMiAtIDcpOworICAgIHRjZ19nZW5fc2Fy aV90bChzaGlmdF9hbXQsIHNoaWZ0X2FtdCwgMzIgLSA3KTsKKyAgICB0Y2dfZ2VuX2V4dF9pMzJf aTY0KHNoaWZ0X2FtdF9pNjQsIHNoaWZ0X2FtdCk7CisKKyAgICB0Y2dfZ2VuX2V4dF9pMzJfaTY0 KHNoaWZ0X2xlZnRfdmFsX2k2NCwgUnNWKTsKKyAgICB0Y2dfZ2VuX3NobF9pNjQoc2hpZnRfbGVm dF92YWxfaTY0LCBzaGlmdF9sZWZ0X3ZhbF9pNjQsIHNoaWZ0X2FtdF9pNjQpOworICAgIHRjZ19n ZW5fZXh0cmxfaTY0X2kzMihzaGlmdF9sZWZ0X3ZhbCwgc2hpZnRfbGVmdF92YWxfaTY0KTsKKwor ICAgIC8qICgoLShTSEFNVCkpIC0gMSkgKi8KKyAgICB0Y2dfZ2VuX25lZ19pNjQoc2hpZnRfYW10 X2k2NCwgc2hpZnRfYW10X2k2NCk7CisgICAgdGNnX2dlbl9zdWJpX2k2NChzaGlmdF9hbXRfaTY0 LCBzaGlmdF9hbXRfaTY0LCAxKTsKKworICAgIHRjZ19nZW5fZXh0X2kzMl9pNjQoc2hpZnRfcmln aHRfdmFsX2k2NCwgUnNWKTsKKyAgICB0Y2dfZ2VuX3Nhcl9pNjQoc2hpZnRfcmlnaHRfdmFsX2k2 NCwgc2hpZnRfcmlnaHRfdmFsX2k2NCwgc2hpZnRfYW10X2k2NCk7CisgICAgdGNnX2dlbl9zYXJp X2k2NChzaGlmdF9yaWdodF92YWxfaTY0LCBzaGlmdF9yaWdodF92YWxfaTY0LCAxKTsKKyAgICB0 Y2dfZ2VuX2V4dHJsX2k2NF9pMzIoc2hpZnRfcmlnaHRfdmFsLCBzaGlmdF9yaWdodF92YWxfaTY0 KTsKKworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9HRSwgb3JfdmFsLCBzaGlmdF9h bXQsIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0X2xlZnRfdmFsLCBzaGlmdF9y aWdodF92YWwpOworICAgIHRjZ19nZW5fb3JfdGwoUnhWLCBSeFYsIG9yX3ZhbCk7CisKKyAgICB0 Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUoc2hpZnRfYW10KTsKKyAgICB0 Y2dfdGVtcF9mcmVlX2k2NChzaGlmdF9hbXRfaTY0KTsKKyAgICB0Y2dfdGVtcF9mcmVlX2k2NChz aGlmdF9sZWZ0X3ZhbF9pNjQpOworICAgIHRjZ190ZW1wX2ZyZWUoc2hpZnRfbGVmdF92YWwpOwor ICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHNoaWZ0X3JpZ2h0X3ZhbF9pNjQpOworICAgIHRjZ190ZW1w X2ZyZWUoc2hpZnRfcmlnaHRfdmFsKTsKKyAgICB0Y2dfdGVtcF9mcmVlKG9yX3ZhbCk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbHNoaWZ0cl80XzR1KFRDR3YgZHN0LCBUQ0d2IHNyYywg aW50MzJfdCBzaGlmdF9hbXQpCit7CisgICAgaWYgKHNoaWZ0X2FtdCA+PSA2NCkgeworICAgICAg ICB0Y2dfZ2VuX21vdmlfdGwoZHN0LCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0Y2dfZ2Vu X3NocmlfdGwoZHN0LCBzcmMsIHNoaWZ0X2FtdCk7CisgICAgfQorfQorCiAjZW5kaWYKLS0gCjIu Ny40Cgo=