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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 AF1A5C433E0 for ; Fri, 8 Jan 2021 04:43:47 +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 5049F22A99 for ; Fri, 8 Jan 2021 04:43:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5049F22A99 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]:47918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxjco-0002CP-BD for qemu-devel@archiver.kernel.org; Thu, 07 Jan 2021 23:43:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxjPB-0007Px-6i for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:42 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:25185) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kxjP5-00058Q-QN for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1610080175; x=1641616175; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=udkgD1ImzEv5jIE9Ii9NJIQujrB9EbZZs4ZfMO38aSM=; b=UZ9MCFelnXe2LreIOuSxjdWYPq9FrVey+BYugwjuhOCxCUJo/Wd5foPD NX0xy287JIdf7cI2igtxzRhaHZiwW05zbOXNwZ3jwf3ejfrcwLXSdqCq2 XlwqE9+xosC2I75bucWVcrNWaGJC9JAhprWtIWgPMAn4eIVUsOIMdh7di A=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 07 Jan 2021 20:29:13 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 07 Jan 2021 20:29:13 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 4774188F; Thu, 7 Jan 2021 22:29:13 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v6 16/35] Hexagon (target/hexagon/conv_emu.[ch]) utility functions Date: Thu, 7 Jan 2021 22:28:47 -0600 Message-Id: <1610080146-14968-17-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1610080146-14968-1-git-send-email-tsimpson@quicinc.com> References: <1610080146-14968-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.248, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: ale@rev.ng, bcain@quicinc.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL2NvbnZfZW11LmggfCAgMzEgKysrKysrKysKIHRhcmdldC9oZXhhZ29u L2NvbnZfZW11LmMgfCAxNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2NvbnZfZW11LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJn ZXQvaGV4YWdvbi9jb252X2VtdS5jCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY29udl9l bXUuaCBiL3RhcmdldC9oZXhhZ29uL2NvbnZfZW11LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDA1ZTdjYwotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2Nv bnZfZW11LmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIw IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg KgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVm IEhFWEFHT05fQ09OVl9FTVVfSAorI2RlZmluZSBIRVhBR09OX0NPTlZfRU1VX0gKKworZXh0ZXJu IHVpbnQ2NF90IGNvbnZfc2ZfdG9fOHUoZmxvYXQzMiBpbiwgZmxvYXRfc3RhdHVzICpmcF9zdGF0 dXMpOworZXh0ZXJuIHVpbnQzMl90IGNvbnZfc2ZfdG9fNHUoZmxvYXQzMiBpbiwgZmxvYXRfc3Rh dHVzICpmcF9zdGF0dXMpOworZXh0ZXJuIGludDY0X3QgY29udl9zZl90b184cyhmbG9hdDMyIGlu LCBmbG9hdF9zdGF0dXMgKmZwX3N0YXR1cyk7CitleHRlcm4gaW50MzJfdCBjb252X3NmX3RvXzRz KGZsb2F0MzIgaW4sIGZsb2F0X3N0YXR1cyAqZnBfc3RhdHVzKTsKKworZXh0ZXJuIHVpbnQ2NF90 IGNvbnZfZGZfdG9fOHUoZmxvYXQ2NCBpbiwgZmxvYXRfc3RhdHVzICpmcF9zdGF0dXMpOworZXh0 ZXJuIHVpbnQzMl90IGNvbnZfZGZfdG9fNHUoZmxvYXQ2NCBpbiwgZmxvYXRfc3RhdHVzICpmcF9z dGF0dXMpOworZXh0ZXJuIGludDY0X3QgY29udl9kZl90b184cyhmbG9hdDY0IGluLCBmbG9hdF9z dGF0dXMgKmZwX3N0YXR1cyk7CitleHRlcm4gaW50MzJfdCBjb252X2RmX3RvXzRzKGZsb2F0NjQg aW4sIGZsb2F0X3N0YXR1cyAqZnBfc3RhdHVzKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS90YXJn ZXQvaGV4YWdvbi9jb252X2VtdS5jIGIvdGFyZ2V0L2hleGFnb24vY29udl9lbXUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDllYTYzCi0tLSAvZGV2L251bGwKKysrIGIv dGFyZ2V0L2hleGFnb24vY29udl9lbXUuYwpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqICBDb3B5 cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFlbXUvaG9zdC11 dGlscy5oIgorI2luY2x1ZGUgImZwdS9zb2Z0ZmxvYXQuaCIKKyNpbmNsdWRlICJtYWNyb3MuaCIK KyNpbmNsdWRlICJjb252X2VtdS5oIgorCisjZGVmaW5lIExMX01BWF9QT1MgMHg3ZmZmZmZmZmZm ZmZmZmZmVUxMCisjZGVmaW5lIE1BWF9QT1MgMHg3ZmZmZmZmZlUKKworc3RhdGljIHVpbnQ2NF90 IGNvbnZfZjY0X3RvXzh1X24oZmxvYXQ2NCBpbiwgaW50IHdpbGxfbmVnYXRlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRfc3RhdHVzICpmcF9zdGF0dXMpCit7CisgICAg dWludDhfdCBzaWduID0gZmxvYXQ2NF9pc19uZWcoaW4pOworICAgIGlmIChmbG9hdDY0X2lzX2lu ZmluaXR5KGluKSkgeworICAgICAgICBmbG9hdF9yYWlzZShmbG9hdF9mbGFnX2ludmFsaWQsIGZw X3N0YXR1cyk7CisgICAgICAgIGlmIChmbG9hdDY0X2lzX25lZyhpbikpIHsKKyAgICAgICAgICAg IHJldHVybiAwVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIH4wVUxM OworICAgICAgICB9CisgICAgfQorICAgIGlmIChmbG9hdDY0X2lzX2FueV9uYW4oaW4pKSB7Cisg ICAgICAgIGZsb2F0X3JhaXNlKGZsb2F0X2ZsYWdfaW52YWxpZCwgZnBfc3RhdHVzKTsKKyAgICAg ICAgcmV0dXJuIH4wVUxMOworICAgIH0KKyAgICBpZiAoZmxvYXQ2NF9pc196ZXJvKGluKSkgewor ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgZmxvYXRf cmFpc2UoZmxvYXRfZmxhZ19pbnZhbGlkLCBmcF9zdGF0dXMpOworICAgICAgICByZXR1cm4gMDsK KyAgICB9CisgICAgaWYgKGZsb2F0NjRfbHQoaW4sIGZsb2F0NjRfaGFsZiwgZnBfc3RhdHVzKSkg eworICAgICAgICAvKiBOZWFyIHplcm8sIGNhcHR1cmVzIGxhcmdlIGZyYWNzaGlmdHMsIGRlbm9y bXMsIGV0YyAqLworICAgICAgICBmbG9hdF9yYWlzZShmbG9hdF9mbGFnX2luZXhhY3QsIGZwX3N0 YXR1cyk7CisgICAgICAgIHN3aXRjaCAoZ2V0X2Zsb2F0X3JvdW5kaW5nX21vZGUoZnBfc3RhdHVz KSkgeworICAgICAgICBjYXNlIGZsb2F0X3JvdW5kX2Rvd246CisgICAgICAgICAgICBpZiAod2ls bF9uZWdhdGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIGNh c2UgZmxvYXRfcm91bmRfdXA6CisgICAgICAgICAgICBpZiAoIXdpbGxfbmVnYXRlKSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg ICAgcmV0dXJuIDA7ICAgIC8qIG5lYXJlc3Qgb3IgdG93YXJkcyB6ZXJvICovCisgICAgICAgIH0K KyAgICB9CisgICAgcmV0dXJuIGZsb2F0NjRfdG9fdWludDY0KGluLCBmcF9zdGF0dXMpOworfQor CitzdGF0aWMgdm9pZCBjbHJfZmxvYXRfZXhjZXB0aW9uX2ZsYWdzKHVpbnQ4X3QgZmxhZywgZmxv YXRfc3RhdHVzICpmcF9zdGF0dXMpCit7CisgICAgdWludDhfdCBmbGFncyA9IGZwX3N0YXR1cy0+ ZmxvYXRfZXhjZXB0aW9uX2ZsYWdzOworICAgIGZsYWdzICY9IH5mbGFnOworICAgIHNldF9mbG9h dF9leGNlcHRpb25fZmxhZ3MoZmxhZ3MsIGZwX3N0YXR1cyk7Cit9CisKK3N0YXRpYyB1aW50MzJf dCBjb252X2RmX3RvXzR1X24oZmxvYXQ2NCBmcDY0LCBpbnQgd2lsbF9uZWdhdGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0X3N0YXR1cyAqZnBfc3RhdHVzKQoreworICAg IHVpbnQ2NF90IHRtcDsKKyAgICB0bXAgPSBjb252X2Y2NF90b184dV9uKGZwNjQsIHdpbGxfbmVn YXRlLCBmcF9zdGF0dXMpOworICAgIGlmICh0bXAgPiAweDAwMDAwMDAwZmZmZmZmZmZVTEwpIHsK KyAgICAgICAgY2xyX2Zsb2F0X2V4Y2VwdGlvbl9mbGFncyhmbG9hdF9mbGFnX2luZXhhY3QsIGZw X3N0YXR1cyk7CisgICAgICAgIGZsb2F0X3JhaXNlKGZsb2F0X2ZsYWdfaW52YWxpZCwgZnBfc3Rh dHVzKTsKKyAgICAgICAgcmV0dXJuIH4wVTsKKyAgICB9CisgICAgcmV0dXJuICh1aW50MzJfdCl0 bXA7Cit9CisKK3VpbnQ2NF90IGNvbnZfZGZfdG9fOHUoZmxvYXQ2NCBpbiwgZmxvYXRfc3RhdHVz ICpmcF9zdGF0dXMpCit7CisgICAgcmV0dXJuIGNvbnZfZjY0X3RvXzh1X24oaW4sIDAsIGZwX3N0 YXR1cyk7Cit9CisKK3VpbnQzMl90IGNvbnZfZGZfdG9fNHUoZmxvYXQ2NCBpbiwgZmxvYXRfc3Rh dHVzICpmcF9zdGF0dXMpCit7CisgICAgcmV0dXJuIGNvbnZfZGZfdG9fNHVfbihpbiwgMCwgZnBf c3RhdHVzKTsKK30KKworaW50NjRfdCBjb252X2RmX3RvXzhzKGZsb2F0NjQgaW4sIGZsb2F0X3N0 YXR1cyAqZnBfc3RhdHVzKQoreworICAgIHVpbnQ4X3Qgc2lnbiA9IGZsb2F0NjRfaXNfbmVnKGlu KTsKKyAgICB1aW50NjRfdCB0bXA7CisgICAgaWYgKGZsb2F0NjRfaXNfYW55X25hbihpbikpIHsK KyAgICAgICAgZmxvYXRfcmFpc2UoZmxvYXRfZmxhZ19pbnZhbGlkLCBmcF9zdGF0dXMpOworICAg ICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzaWduKSB7CisgICAgICAgIGZsb2F0NjQg bWludXNfZnA2NCA9IGZsb2F0NjRfYWJzKGluKTsKKyAgICAgICAgdG1wID0gY29udl9mNjRfdG9f OHVfbihtaW51c19mcDY0LCAxLCBmcF9zdGF0dXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRt cCA9IGNvbnZfZjY0X3RvXzh1X24oaW4sIDAsIGZwX3N0YXR1cyk7CisgICAgfQorICAgIGlmICh0 bXAgPiAoTExfTUFYX1BPUyArIHNpZ24pKSB7CisgICAgICAgIGNscl9mbG9hdF9leGNlcHRpb25f ZmxhZ3MoZmxvYXRfZmxhZ19pbmV4YWN0LCBmcF9zdGF0dXMpOworICAgICAgICBmbG9hdF9yYWlz ZShmbG9hdF9mbGFnX2ludmFsaWQsIGZwX3N0YXR1cyk7CisgICAgICAgIHRtcCA9IChMTF9NQVhf UE9TICsgc2lnbik7CisgICAgfQorICAgIGlmIChzaWduKSB7CisgICAgICAgIHJldHVybiAtdG1w OworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorfQorCitpbnQzMl90 IGNvbnZfZGZfdG9fNHMoZmxvYXQ2NCBpbiwgZmxvYXRfc3RhdHVzICpmcF9zdGF0dXMpCit7Cisg ICAgdWludDhfdCBzaWduID0gZmxvYXQ2NF9pc19uZWcoaW4pOworICAgIHVpbnQ2NF90IHRtcDsK KyAgICBpZiAoZmxvYXQ2NF9pc19hbnlfbmFuKGluKSkgeworICAgICAgICBmbG9hdF9yYWlzZShm bG9hdF9mbGFnX2ludmFsaWQsIGZwX3N0YXR1cyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9 CisgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgZmxvYXQ2NCBtaW51c19mcDY0ID0gZmxvYXQ2NF9h YnMoaW4pOworICAgICAgICB0bXAgPSBjb252X2Y2NF90b184dV9uKG1pbnVzX2ZwNjQsIDEsIGZw X3N0YXR1cyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdG1wID0gY29udl9mNjRfdG9fOHVfbihp biwgMCwgZnBfc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKHRtcCA+IChNQVhfUE9TICsgc2lnbikp IHsKKyAgICAgICAgY2xyX2Zsb2F0X2V4Y2VwdGlvbl9mbGFncyhmbG9hdF9mbGFnX2luZXhhY3Qs IGZwX3N0YXR1cyk7CisgICAgICAgIGZsb2F0X3JhaXNlKGZsb2F0X2ZsYWdfaW52YWxpZCwgZnBf c3RhdHVzKTsKKyAgICAgICAgdG1wID0gKE1BWF9QT1MgKyBzaWduKTsKKyAgICB9CisgICAgaWYg KHNpZ24pIHsKKyAgICAgICAgcmV0dXJuIC10bXA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0 dXJuIHRtcDsKKyAgICB9Cit9CisKK3VpbnQ2NF90IGNvbnZfc2ZfdG9fOHUoZmxvYXQzMiBpbiwg ZmxvYXRfc3RhdHVzICpmcF9zdGF0dXMpCit7CisgICAgZmxvYXQ2NCBmcDY0ID0gZmxvYXQzMl90 b19mbG9hdDY0KGluLCBmcF9zdGF0dXMpOworICAgIHJldHVybiBjb252X2RmX3RvXzh1KGZwNjQs IGZwX3N0YXR1cyk7Cit9CisKK3VpbnQzMl90IGNvbnZfc2ZfdG9fNHUoZmxvYXQzMiBpbiwgZmxv YXRfc3RhdHVzICpmcF9zdGF0dXMpCit7CisgICAgZmxvYXQ2NCBmcDY0ID0gZmxvYXQzMl90b19m bG9hdDY0KGluLCBmcF9zdGF0dXMpOworICAgIHJldHVybiBjb252X2RmX3RvXzR1KGZwNjQsIGZw X3N0YXR1cyk7Cit9CisKK2ludDY0X3QgY29udl9zZl90b184cyhmbG9hdDMyIGluLCBmbG9hdF9z dGF0dXMgKmZwX3N0YXR1cykKK3sKKyAgICBmbG9hdDY0IGZwNjQgPSBmbG9hdDMyX3RvX2Zsb2F0 NjQoaW4sIGZwX3N0YXR1cyk7CisgICAgcmV0dXJuIGNvbnZfZGZfdG9fOHMoZnA2NCwgZnBfc3Rh dHVzKTsKK30KKworaW50MzJfdCBjb252X3NmX3RvXzRzKGZsb2F0MzIgaW4sIGZsb2F0X3N0YXR1 cyAqZnBfc3RhdHVzKQoreworICAgIGZsb2F0NjQgZnA2NCA9IGZsb2F0MzJfdG9fZmxvYXQ2NChp biwgZnBfc3RhdHVzKTsKKyAgICByZXR1cm4gY29udl9kZl90b180cyhmcDY0LCBmcF9zdGF0dXMp OworfQotLSAKMi43LjQKCg==