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,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 B0EBEC07E99 for ; Mon, 5 Jul 2021 23:39:34 +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 551696194B for ; Mon, 5 Jul 2021 23:39:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 551696194B 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]:40182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m0YBY-00059m-VN for qemu-devel@archiver.kernel.org; Mon, 05 Jul 2021 19:39:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35462) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m0Y70-0003N5-Vq for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:34:51 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:37352) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1m0Y6v-0004a6-MK for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:34:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1625528085; x=1657064085; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZCWZd2BnlXaUXisaHNzeErfxc2cUem0d7TgrdfSapv0=; b=t+b4BduoMNUH8I903KZCpoAJFe1lIL3vqJyQdqejK2II2h18Kr3pnn88 DX6vadJYlO9iCMzCA9FMkbk1Gw2wkFbcnLCXfFo+f4EhqC58L8rLIAACN DZHriNU18Xvrnm4khZA6ayUaF2HhBsteqiHKSRO1a7EoYxRUI9+sA5TKd I=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-01.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id DEF4CFFD; Mon, 5 Jul 2021 18:34:37 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH 06/20] Hexagon HVX (target/hexagon) macros Date: Mon, 5 Jul 2021 18:34:20 -0500 Message-Id: <1625528074-19440-7-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> References: <1625528074-19440-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.249, 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, peter.maydell@linaro.org, bcain@quicinc.com, richard.henderson@linaro.org, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" bWFjcm9zIHRvIGludGVyZmFjZSB3aXRoIHRoZSBnZW5lcmF0b3IKbWFjcm9zIHJlZmVyZW5jZWQg aW4gaW5zdHJ1Y3Rpb24gc2VtYW50aWNzCgpTaWduZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8 dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFnb24vbWFjcm9zLmggICAgICAg fCAgMjIgKysKIHRhcmdldC9oZXhhZ29uL21tdmVjL21hY3Jvcy5oIHwgNDc4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1MDAgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL21tdmVjL21hY3Jv cy5oCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbWFjcm9zLmggYi90YXJnZXQvaGV4YWdv bi9tYWNyb3MuaAppbmRleCAwOTRiOGRhLi44NTIxODNmIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4 YWdvbi9tYWNyb3MuaAorKysgYi90YXJnZXQvaGV4YWdvbi9tYWNyb3MuaApAQCAtMjY5LDYgKzI2 OSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3ByZWRfY2FuY2VsKFRDR3YgcHJlZCwgaW50 IHNsb3RfbnVtKQogCiAjZGVmaW5lIGZORVdSRUdfU1QoVkFMKSAoVkFMKQogCisjZGVmaW5lIGZW U0FUVVZBTE4oTiwgVkFMKSBcCisgICAgKHsgXAorICAgICAgICAoKChpbnQpKFZBTCkpIDwgMCkg PyAwIDogKCgxTEwgPDwgKE4pKSAtIDEpOyBcCisgICAgfSkKICNkZWZpbmUgZlNBVFVWQUxOKE4s IFZBTCkgXAogICAgICh7IFwKICAgICAgICAgZlNFVF9PVkVSRkxPVygpOyBcCkBAIC0yNzksMTAg KzI4MywxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3ByZWRfY2FuY2VsKFRDR3YgcHJlZCwg aW50IHNsb3RfbnVtKQogICAgICAgICBmU0VUX09WRVJGTE9XKCk7IFwKICAgICAgICAgKChWQUwp IDwgMCkgPyAoLSgxTEwgPDwgKChOKSAtIDEpKSkgOiAoKDFMTCA8PCAoKE4pIC0gMSkpIC0gMSk7 IFwKICAgICB9KQorI2RlZmluZSBmVlNBVFZBTE4oTiwgVkFMKSBcCisgICAgKHsgXAorICAgICAg ICAoKFZBTCkgPCAwKSA/ICgtKDFMTCA8PCAoKE4pIC0gMSkpKSA6ICgoMUxMIDw8ICgoTikgLSAx KSkgLSAxKTsgXAorICAgIH0pCiAjZGVmaW5lIGZaWFROKE4sIE0sIFZBTCkgKCgoTikgIT0gMCkg PyBleHRyYWN0NjQoKFZBTCksIDAsIChOKSkgOiAwTEwpCiAjZGVmaW5lIGZTWFROKE4sIE0sIFZB TCkgKCgoTikgIT0gMCkgPyBzZXh0cmFjdDY0KChWQUwpLCAwLCAoTikpIDogMExMKQogI2RlZmlu ZSBmU0FUTihOLCBWQUwpIFwKICAgICAoKGZTWFROKE4sIDY0LCBWQUwpID09IChWQUwpKSA/IChW QUwpIDogZlNBVFZBTE4oTiwgVkFMKSkKKyNkZWZpbmUgZlZTQVROKE4sIFZBTCkgXAorICAgICgo ZlNYVE4oTiwgNjQsIFZBTCkgPT0gKFZBTCkpID8gKFZBTCkgOiBmVlNBVFZBTE4oTiwgVkFMKSkK ICNkZWZpbmUgZkFERFNBVDY0KERTVCwgQSwgQikgXAogICAgIGRvIHsgXAogICAgICAgICB1aW50 NjRfdCBfX2EgPSBmQ0FTVDh1KEEpOyBcCkBAIC0zMDUsMTIgKzMxNSwxOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX3ByZWRfY2FuY2VsKFRDR3YgcHJlZCwgaW50IHNsb3RfbnVtKQogICAgICAg ICAgICAgRFNUID0gX19zdW07IFwKICAgICAgICAgfSBcCiAgICAgfSB3aGlsZSAoMCkKKyNkZWZp bmUgZlZTQVRVTihOLCBWQUwpIFwKKyAgICAoKGZaWFROKE4sIDY0LCBWQUwpID09IChWQUwpKSA/ IChWQUwpIDogZlZTQVRVVkFMTihOLCBWQUwpKQogI2RlZmluZSBmU0FUVU4oTiwgVkFMKSBcCiAg ICAgKChmWlhUTihOLCA2NCwgVkFMKSA9PSAoVkFMKSkgPyAoVkFMKSA6IGZTQVRVVkFMTihOLCBW QUwpKQogI2RlZmluZSBmU0FUSChWQUwpIChmU0FUTigxNiwgVkFMKSkKICNkZWZpbmUgZlNBVFVI KFZBTCkgKGZTQVRVTigxNiwgVkFMKSkKKyNkZWZpbmUgZlZTQVRIKFZBTCkgKGZWU0FUTigxNiwg VkFMKSkKKyNkZWZpbmUgZlZTQVRVSChWQUwpIChmVlNBVFVOKDE2LCBWQUwpKQogI2RlZmluZSBm U0FUVUIoVkFMKSAoZlNBVFVOKDgsIFZBTCkpCiAjZGVmaW5lIGZTQVRCKFZBTCkgKGZTQVROKDgs IFZBTCkpCisjZGVmaW5lIGZWU0FUVUIoVkFMKSAoZlZTQVRVTig4LCBWQUwpKQorI2RlZmluZSBm VlNBVEIoVkFMKSAoZlZTQVROKDgsIFZBTCkpCiAjZGVmaW5lIGZJTU1FWFQoSU1NKSAoSU1NID0g SU1NKQogI2RlZmluZSBmTVVTVF9JTU1FWFQoSU1NKSBmSU1NRVhUKElNTSkKIApAQCAtNDE3LDYg KzQzMyw4IEBAIHN0YXRpYyBpbmxpbmUgVENHdiBnZW5fcmVhZF9pcmVnKFRDR3YgcmVzdWx0LCBU Q0d2IHZhbCwgaW50IHNoaWZ0KQogI2RlZmluZSBmQ0FTVDRzKEEpICgoaW50MzJfdCkoQSkpCiAj ZGVmaW5lIGZDQVNUOHUoQSkgKCh1aW50NjRfdCkoQSkpCiAjZGVmaW5lIGZDQVNUOHMoQSkgKChp bnQ2NF90KShBKSkKKyNkZWZpbmUgZkNBU1QyXzJzKEEpICgoaW50MTZfdCkoQSkpCisjZGVmaW5l IGZDQVNUMl8ydShBKSAoKHVpbnQxNl90KShBKSkKICNkZWZpbmUgZkNBU1Q0XzRzKEEpICgoaW50 MzJfdCkoQSkpCiAjZGVmaW5lIGZDQVNUNF80dShBKSAoKHVpbnQzMl90KShBKSkKICNkZWZpbmUg ZkNBU1Q0XzhzKEEpICgoaW50NjRfdCkoKGludDMyX3QpKEEpKSkKQEAgLTUxNCw3ICs1MzIsOSBA QCBzdGF0aWMgaW5saW5lIFRDR3YgZ2VuX3JlYWRfaXJlZyhUQ0d2IHJlc3VsdCwgVENHdiB2YWws IGludCBzaGlmdCkKICNkZWZpbmUgZlBNX00oUkVHLCBNVkFMKSAgICBkbyB7IFJFRyA9IFJFRyAr IChNVkFMKTsgfSB3aGlsZSAoMCkKICNlbmRpZgogI2RlZmluZSBmU0NBTEUoTiwgQSkgKCgoaW50 NjRfdCkoQSkpIDw8IE4pCisjZGVmaW5lIGZWU0FUVyhBKSBmVlNBVE4oMzIsICgobG9uZyBsb25n KUEpKQogI2RlZmluZSBmU0FUVyhBKSBmU0FUTigzMiwgKChsb25nIGxvbmcpQSkpCisjZGVmaW5l IGZWU0FUKEEpIGZWU0FUTigzMiwgKEEpKQogI2RlZmluZSBmU0FUKEEpIGZTQVROKDMyLCAoQSkp CiAjZGVmaW5lIGZTQVRfT1JJR19TSEwoQSwgT1JJR19SRUcpIFwKICAgICAoKCgoaW50MzJfdCko KGZTQVQoQSkpIF4gKChpbnQzMl90KShPUklHX1JFRykpKSkgPCAwKSBcCkBAIC02NTEsMTIgKzY3 MSwxNCBAQCBzdGF0aWMgaW5saW5lIFRDR3YgZ2VuX3JlYWRfaXJlZyhUQ0d2IHJlc3VsdCwgVENH diB2YWwsIGludCBzaGlmdCkKICAgICAgICAgICAgIGZTRVRCSVQoaiwgRFNULCBWQUwpOyBcCiAg ICAgICAgIH0gXAogICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZDT1VOVE9ORVNfMihWQUwpIGN0 cG9wMTYoVkFMKQogI2RlZmluZSBmQ09VTlRPTkVTXzQoVkFMKSBjdHBvcDMyKFZBTCkKICNkZWZp bmUgZkNPVU5UT05FU184KFZBTCkgY3Rwb3A2NChWQUwpCiAjZGVmaW5lIGZCUkVWXzgoVkFMKSBy ZXZiaXQ2NChWQUwpCiAjZGVmaW5lIGZCUkVWXzQoVkFMKSByZXZiaXQzMihWQUwpCiAjZGVmaW5l IGZDTDFfOChWQUwpIGNsbzY0KFZBTCkKICNkZWZpbmUgZkNMMV80KFZBTCkgY2xvMzIoVkFMKQor I2RlZmluZSBmQ0wxXzIoVkFMKSBjb3VudF9sZWFkaW5nX29uZXNfMihWQUwpCiAjZGVmaW5lIGZJ TlRFUkxFQVZFKE9ERCwgRVZFTikgaW50ZXJsZWF2ZShPREQsIEVWRU4pCiAjZGVmaW5lIGZERUlO VEVSTEVBVkUoTUlYRUQpIGRlaW50ZXJsZWF2ZShNSVhFRCkKICNkZWZpbmUgZkhJREUoQSkgQQpk aWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbW12ZWMvbWFjcm9zLmggYi90YXJnZXQvaGV4YWdv bi9tbXZlYy9tYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE1 Yjg3Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vbW12ZWMvbWFjcm9zLmgKQEAg LTAsMCArMSw0NzggQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJ bm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX01N VkVDX01BQ1JPU19ICisjZGVmaW5lIEhFWEFHT05fTU1WRUNfTUFDUk9TX0gKKworI2luY2x1ZGUg InFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11L2hvc3QtdXRpbHMuaCIKKyNpbmNsdWRlICJh cmNoLmgiCisjaW5jbHVkZSAibW12ZWMvc3lzdGVtX2V4dF9tbXZlYy5oIgorCisjaWZuZGVmIFFF TVVfR0VORVJBVEUKKyNkZWZpbmUgVmRWICAgICAgKCooTU1WZWN0b3IgKikoVmRWX3ZvaWQpKQor I2RlZmluZSBWc1YgICAgICAoKihNTVZlY3RvciAqKShWc1Zfdm9pZCkpCisjZGVmaW5lIFZ1ViAg ICAgICgqKE1NVmVjdG9yICopKFZ1Vl92b2lkKSkKKyNkZWZpbmUgVnZWICAgICAgKCooTU1WZWN0 b3IgKikoVnZWX3ZvaWQpKQorI2RlZmluZSBWd1YgICAgICAoKihNTVZlY3RvciAqKShWd1Zfdm9p ZCkpCisjZGVmaW5lIFZ4ViAgICAgICgqKE1NVmVjdG9yICopKFZ4Vl92b2lkKSkKKyNkZWZpbmUg VnlWICAgICAgKCooTU1WZWN0b3IgKikoVnlWX3ZvaWQpKQorCisjZGVmaW5lIFZkZFYgICAgICgq KE1NVmVjdG9yUGFpciAqKShWZGRWX3ZvaWQpKQorI2RlZmluZSBWdXVWICAgICAoKihNTVZlY3Rv clBhaXIgKikoVnV1Vl92b2lkKSkKKyNkZWZpbmUgVnZ2ViAgICAgKCooTU1WZWN0b3JQYWlyICop KFZ2dlZfdm9pZCkpCisjZGVmaW5lIFZ4eFYgICAgICgqKE1NVmVjdG9yUGFpciAqKShWeHhWX3Zv aWQpKQorCisjZGVmaW5lIFFlViAgICAgICgqKE1NUVJlZyAqKShRZVZfdm9pZCkpCisjZGVmaW5l IFFkViAgICAgICgqKE1NUVJlZyAqKShRZFZfdm9pZCkpCisjZGVmaW5lIFFzViAgICAgICgqKE1N UVJlZyAqKShRc1Zfdm9pZCkpCisjZGVmaW5lIFF0ViAgICAgICgqKE1NUVJlZyAqKShRdFZfdm9p ZCkpCisjZGVmaW5lIFF1ViAgICAgICgqKE1NUVJlZyAqKShRdVZfdm9pZCkpCisjZGVmaW5lIFF2 ViAgICAgICgqKE1NUVJlZyAqKShRdlZfdm9pZCkpCisjZGVmaW5lIFF4ViAgICAgICgqKE1NUVJl ZyAqKShReFZfdm9pZCkpCisjZW5kaWYKKworI2RlZmluZSBORVdfV1JJVFRFTihOVU0pICgoZW52 LT5WUmVnc19zZWxlY3QgPj4gKE5VTSkpICYgMSkKKyNkZWZpbmUgVE1QX1dSSVRURU4oTlVNKSAo KGVudi0+VlJlZ3NfdXBkYXRlZF90bXAgPj4gKE5VTSkpICYgMSkKKworI2RlZmluZSBUWVBFX1ZP SUQoWCkgICBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZihYKSwgdm9pZCAqKQor I2RlZmluZSBUWVBFX01NVkVDVE9SKFgpICAgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoWCksIE1NVmVjdG9yKQorCisjZGVmaW5lIExPR19WUkVHX1dSSVRFX0ZVTkMoWCkgXAor ICAgIF9fYnVpbHRpbl9jaG9vc2VfZXhwcihUWVBFX1ZPSUQoWCksIFwKKyAgICAgICAgbG9nX3Zy ZWdfd3JpdGUsIFwKKyAgICAgICAgX19idWlsdGluX2Nob29zZV9leHByKFRZUEVfTU1WRUNUT1Io WCksIFwKKyAgICAgICAgICAgIGxvZ19tbXZlY3Rvcl93cml0ZSwgKHZvaWQpMCkpCisjZGVmaW5l IExPR19WUkVHX1dSSVRFKE5VTSwgVkFSLCBWTkVXKSBcCisgICAgTE9HX1ZSRUdfV1JJVEVfRlVO QyhWQVIpKGVudiwgTlVNLCBWQVIsIFZORVcpCisKKyNkZWZpbmUgUkVBRF9FWFRfVlJFRyhOVU0s IFZBUiwgVlRNUCkgXAorICAgIGRvIHsgXAorICAgICAgICBWQVIgPSAoKE5FV19XUklUVEVOKE5V TSkpID8gZW52LT5mdXR1cmVfVlJlZ3NbTlVNXSBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBlbnYtPlZSZWdzW05VTV0pOyBcCisgICAgICAgIFZBUiA9ICgoVE1QX1dSSVRU RU4oTlVNKSkgPyBlbnYtPnRtcF9WUmVnc1tOVU1dIDogVkFSKTsgXAorICAgICAgICBpZiAoVlRN UCA9PSBFWFRfVE1QKSB7IFwKKyAgICAgICAgICAgIGlmIChlbnYtPlZSZWdzX3VwZGF0ZWQgJiAo KFZSZWdNYXNrKTEpIDw8IChOVU0pKSB7IFwKKyAgICAgICAgICAgICAgICBWQVIgPSBlbnYtPmZ1 dHVyZV9WUmVnc1tOVU1dOyBcCisgICAgICAgICAgICAgICAgZW52LT5WUmVnc191cGRhdGVkIF49 ICgoVlJlZ01hc2spMSkgPDwgKE5VTSk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwK KyAgICB9IHdoaWxlICgwKQorCisKKyNkZWZpbmUgV1JJVEVfRVhUX1ZSRUcoTlVNLCBWQVIsIFZO RVcpICAgTE9HX1ZSRUdfV1JJVEUoTlVNLCBWQVIsIFZORVcpCisKKyNkZWZpbmUgTE9HX1ZUQ01f QllURShWQSwgTUFTSywgVkFMLCBJRFgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZW52LT52dGNt X2xvZy5kYXRhLnViW0lEWF0gPSAoVkFMKTsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLm1hc2su dWJbSURYXSA9IChNQVNLKTsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLnZhW0lEWF0gPSAoVkEp OyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBmTk9UUShWQUwpIFwKKyAgICAoeyBcCisg ICAgICAgIE1NUVJlZyBfcmV0OyAgXAorICAgICAgICBpbnQgX2lfOyAgXAorICAgICAgICBmb3Ig KF9pXyA9IDA7IF9pXyA8IGZWRUNTSVpFKCkgLyA2NDsgX2lfKyspIHsgXAorICAgICAgICAgICAg X3JldC51ZFtfaV9dID0gflZBTC51ZFtfaV9dOyBcCisgICAgICAgIH0gXAorICAgICAgICBfcmV0 O1wKKyAgICAgfSkKKyNkZWZpbmUgZkdFVFFCSVRTKFJFRywgV0lEVEgsIE1BU0ssIEJJVE5PKSBc CisgICAgKChNQVNLKSAmIChSRUcud1soQklUTk8pID4+IDVdID4+ICgoQklUTk8pICYgMHgxZikp KQorI2RlZmluZSBmR0VUUUJJVChSRUcsIEJJVE5PKSBmR0VUUUJJVFMoUkVHLCAxLCAxLCBCSVRO TykKKyNkZWZpbmUgZkdFTk1BU0tXKFFSRUcsIElEWCkgXAorICAgICgoKGZHRVRRQklUKFFSRUcs IChJRFggKiA0ICsgMCkpID8gMHhGRiA6IDB4MCkgPDwgMCkgIHwgXAorICAgICAoKGZHRVRRQklU KFFSRUcsIChJRFggKiA0ICsgMSkpID8gMHhGRiA6IDB4MCkgPDwgOCkgIHwgXAorICAgICAoKGZH RVRRQklUKFFSRUcsIChJRFggKiA0ICsgMikpID8gMHhGRiA6IDB4MCkgPDwgMTYpIHwgXAorICAg ICAoKGZHRVRRQklUKFFSRUcsIChJRFggKiA0ICsgMykpID8gMHhGRiA6IDB4MCkgPDwgMjQpKQor I2RlZmluZSBmR0VUTklCQkxFKElEWCwgU1JDKSAoZlNYVE4oNCwgOCwgKFNSQyA+PiAoNCAqIElE WCkpICYgMHhGKSkKKyNkZWZpbmUgZkdFVENSVU1CKElEWCwgU1JDKSAoZlNYVE4oMiwgOCwgKFNS QyA+PiAoMiAqIElEWCkpICYgMHgzKSkKKyNkZWZpbmUgZkdFVENSVU1CX1NZTU1FVFJJQyhJRFgs IFNSQykgXAorICAgICgoZkdFVENSVU1CKElEWCwgU1JDKSA+PSAwID8gKDIgLSBmR0VUQ1JVTUIo SURYLCBTUkMpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmR0VUQ1JVTUIo SURYLCBTUkMpKSkKKyNkZWZpbmUgZkdFTk1BU0tIKFFSRUcsIElEWCkgXAorICAgICgoKGZHRVRR QklUKFFSRUcsIChJRFggKiAyICsgMCkpID8gMHhGRiA6IDB4MCkgPDwgMCkgfCBcCisgICAgICgo ZkdFVFFCSVQoUVJFRywgKElEWCAqIDIgKyAxKSkgPyAweEZGIDogMHgwKSA8PCA4KSkKKyNkZWZp bmUgZkdFVE1BU0tXKFZSRUcsIFFSRUcsIElEWCkgKFZSRUcud1tJRFhdICYgZkdFTk1BU0tXKChR UkVHKSwgSURYKSkKKyNkZWZpbmUgZkdFVE1BU0tIKFZSRUcsIFFSRUcsIElEWCkgKFZSRUcuaFtJ RFhdICYgZkdFTk1BU0tIKChRUkVHKSwgSURYKSkKKyNkZWZpbmUgZkNPTkRNQVNLOChRUkVHLCBJ RFgsIFlFU1ZBTCwgTk9WQUwpIFwKKyAgICAoZkdFVFFCSVQoUVJFRywgSURYKSA/IChZRVNWQUwp IDogKE5PVkFMKSkKKyNkZWZpbmUgZkNPTkRNQVNLMTYoUVJFRywgSURYLCBZRVNWQUwsIE5PVkFM KSBcCisgICAgKChmR0VOTUFTS0goUVJFRywgSURYKSAmIChZRVNWQUwpKSB8IFwKKyAgICAgKGZH RU5NQVNLSChmTk9UUShRUkVHKSwgSURYKSAmIChOT1ZBTCkpKQorI2RlZmluZSBmQ09ORE1BU0sz MihRUkVHLCBJRFgsIFlFU1ZBTCwgTk9WQUwpIFwKKyAgICAoKGZHRU5NQVNLVyhRUkVHLCBJRFgp ICYgKFlFU1ZBTCkpIHwgXAorICAgICAoZkdFTk1BU0tXKGZOT1RRKFFSRUcpLCBJRFgpICYgKE5P VkFMKSkpCisjZGVmaW5lIGZTRVRRQklUUyhSRUcsIFdJRFRILCBNQVNLLCBCSVROTywgVkFMKSBc CisgICAgZG8geyBcCisgICAgICAgIHVpbnQzMl90IF9fVE1QID0gKFZBTCk7IFwKKyAgICAgICAg UkVHLndbKEJJVE5PKSA+PiA1XSAmPSB+KChNQVNLKSA8PCAoKEJJVE5PKSAmIDB4MWYpKTsgXAor ICAgICAgICBSRUcud1soQklUTk8pID4+IDVdIHw9ICgoKF9fVE1QKSAmIChNQVNLKSkgPDwgKChC SVROTykgJiAweDFmKSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU0VUUUJJVChSRUcs IEJJVE5PLCBWQUwpIGZTRVRRQklUUyhSRUcsIDEsIDEsIEJJVE5PLCBWQUwpCisjZGVmaW5lIGZW QllURVMoKSAoZlZFQ1NJWkUoKSkKKyNkZWZpbmUgZlZBTElHTihBRERSLCBMT0cyX0FMSUdOTUVO VCkgKEFERFIgPSBBRERSICYgfihMT0cyX0FMSUdOTUVOVCAtIDEpKQorI2RlZmluZSBmVkxBU1RC WVRFKEFERFIsIExPRzJfQUxJR05NRU5UKSAoQUREUiA9IEFERFIgfCAoTE9HMl9BTElHTk1FTlQg LSAxKSkKKyNkZWZpbmUgZlZFTEVNKFdJRFRIKSAoKGZWRUNTSVpFKCkgKiA4KSAvIFdJRFRIKQor I2RlZmluZSBmVkVDTE9HU0laRSgpICg3KQorI2RlZmluZSBmVkVDU0laRSgpICgxIDw8IGZWRUNM T0dTSVpFKCkpCisjZGVmaW5lIGZTV0FQQihBLCBCKSBkbyB7IHVpbnQ4X3QgdG1wID0gQTsgQSA9 IEI7IEIgPSB0bXA7IH0gd2hpbGUgKDApCitzdGF0aWMgaW5saW5lIE1NVmVjdG9yIG1tdmVjX3pl cm9fdmVjdG9yKHZvaWQpCit7CisgICAgTU1WZWN0b3IgcmV0OworICAgIG1lbXNldCgmcmV0LCAw LCBzaXplb2YocmV0KSk7CisgICAgcmV0dXJuIHJldDsKK30KKyNkZWZpbmUgZlZaRVJPKCkgbW12 ZWNfemVyb192ZWN0b3IoKQorI2RlZmluZSBmTkVXVlJFRyhWTlVNKSBcCisgICAgKChlbnYtPlZS ZWdzX3VwZGF0ZWQgJiAoKChWUmVnTWFzaykxKSA8PCBWTlVNKSkgPyBlbnYtPmZ1dHVyZV9WUmVn c1tWTlVNXSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBtbXZlY196ZXJvX3ZlY3RvcigpKQorI2RlZmluZSBmVl9BTF9DSEVDSyhFQSwgTUFT SykgXAorICAgIGlmICgoRUEpICYgKE1BU0spKSB7IFwKKyAgICAgICAgd2FybigiYWxpZ25pbmcg bWlzYWxpZ25lZCB2ZWN0b3IuIEVBPSUwOHgiLCAoRUEpKTsgXAorICAgIH0KKyNkZWZpbmUgZlND QVRURVJfSU5JVChSRUdJT05fU1RBUlQsIExFTkdUSCwgRUxFTUVOVF9TSVpFKSBcCisgICAgbWVt X3ZlY3Rvcl9zY2F0dGVyX2luaXQoZW52LCBzbG90LCBSRUdJT05fU1RBUlQsIExFTkdUSCwgRUxF TUVOVF9TSVpFKQorI2RlZmluZSBmR0FUSEVSX0lOSVQoUkVHSU9OX1NUQVJULCBMRU5HVEgsIEVM RU1FTlRfU0laRSkgXAorICAgIG1lbV92ZWN0b3JfZ2F0aGVyX2luaXQoZW52LCBzbG90LCBSRUdJ T05fU1RBUlQsIExFTkdUSCwgRUxFTUVOVF9TSVpFKQorI2RlZmluZSBmU0NBVFRFUl9GSU5JU0go T1ApCisjZGVmaW5lIGZHQVRIRVJfRklOSVNIKCkKKyNkZWZpbmUgZkxPR19TQ0FUVEVSX09QKFNJ WkUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZW52LT52dGNtX2xvZy5vcCA9IHRydWU7IFwKKyAg ICAgICAgZW52LT52dGNtX2xvZy5vcF9zaXplID0gU0laRTsgXAorICAgIH0gd2hpbGUgKDApCisj ZGVmaW5lIGZWTE9HX1ZUQ01fV09SRF9JTkNSRU1FTlQoRUEsIE9GRlNFVCwgSU5DLCBJRFgsIEFM SUdOTUVOVCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIGludCBsb2dfYnl0ZSA9IDA7IFwK KyAgICAgICAgdGFyZ2V0X3Vsb25nIHZhID0gRUE7IFwKKyAgICAgICAgdGFyZ2V0X3Vsb25nIHZh X2hpZ2ggPSBFQSArIExFTjsgXAorICAgICAgICBmb3IgKGludCBpMCA9IDA7IGkwIDwgNDsgaTAr KykgeyBcCisgICAgICAgICAgICBsb2dfYnl0ZSA9ICh2YSArIGkwKSA8PSB2YV9oaWdoOyBcCisg ICAgICAgICAgICBMT0dfVlRDTV9CWVRFKHZhICsgaTAsIGxvZ19ieXRlLCBJTkMuIHViWzQgKiBJ RFggKyBpMF0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNCAqIElEWCArIGkwKTsgXAor ICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JE X0lOQ1JFTUVOVChFQSwgT0ZGU0VULCBJTkMsIElEWCwgQUxJR05NRU5ULCBMRU4pIFwKKyAgICBk byB7IFwKKyAgICAgICAgaW50IGxvZ19ieXRlID0gMDsgXAorICAgICAgICB0YXJnZXRfdWxvbmcg dmEgPSBFQTsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisg ICAgICAgIGZvciAoaW50IGkwID0gMDsgaTAgPCAyOyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxv Z19ieXRlID0gKHZhICsgaTApIDw9IHZhX2hpZ2g7IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZ VEUodmEgKyBpMCwgbG9nX2J5dGUsIElOQy51YlsyICogSURYICsgaTBdLCBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgIDIgKiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGls ZSAoMCkKKworI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEX0lOQ1JFTUVOVF9EVihFQSwgT0ZG U0VULCBJTkMsIElEWCwgSURYMiwgSURYX0gsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQUxJR05NRU5ULCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50 IGxvZ19ieXRlID0gMDsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmEgPSBFQTsgXAorICAgICAg ICB0YXJnZXRfdWxvbmcgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGZvciAoaW50IGkw ID0gMDsgaTAgPCAyOyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxvZ19ieXRlID0gKHZhICsgaTAp IDw9IHZhX2hpZ2g7IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5 dGUsIElOQy51YlsyICogSURYICsgaTBdLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIg KiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogTk9URSAt IFdpbGwgdGhpcyBhbHdheXMgYmUgdG1wX1ZSZWdzWzBdOyAqLworI2RlZmluZSBHQVRIRVJfRlVO Q1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIEVMRU1FTlRfU0laRSwgQkFOS19JRFgsIFFWQUwp IFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50IGkwOyBcCisgICAgICAgIHRhcmdldF91bG9uZyB2 YSA9IEVBOyBcCisgICAgICAgIHRhcmdldF91bG9uZyB2YV9oaWdoID0gRUEgKyBMRU47IFwKKyAg ICAgICAgaW50IGxvZ19iYW5rID0gMDsgXAorICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOyBcCisg ICAgICAgIGZvciAoaTAgPSAwOyBpMCA8IEVMRU1FTlRfU0laRTsgaTArKykgeyBcCisgICAgICAg ICAgICBsb2dfYnl0ZSA9ICgodmEgKyBpMCkgPD0gdmFfaGlnaCkgJiYgUVZBTDsgXAorICAgICAg ICAgICAgbG9nX2JhbmsgfD0gKGxvZ19ieXRlIDw8IGkwKTsgXAorICAgICAgICAgICAgdWludDhf dCBCOyBcCisgICAgICAgICAgICBnZXRfdXNlcl91OChCLCBFQSArIGkwKTsgXAorICAgICAgICAg ICAgZW52LT50bXBfVlJlZ3NbMF0udWJbRUxFTUVOVF9TSVpFICogSURYICsgaTBdID0gQjsgXAor ICAgICAgICAgICAgTE9HX1ZUQ01fQllURSh2YSArIGkwLCBsb2dfYnl0ZSwgQiwgRUxFTUVOVF9T SVpFICogSURYICsgaTApOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5l IGZWTE9HX1ZUQ01fR0FUSEVSX1dPUkQoRUEsIE9GRlNFVCwgSURYLCBMRU4pIFwKKyAgICBkbyB7 IFwKKyAgICAgICAgR0FUSEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCA0LCBJRFgs IDEpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9HQVRIRVJfSEFMRldP UkQoRUEsIE9GRlNFVCwgSURYLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgR0FUSEVSX0ZV TkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCAyLCBJRFgsIDEpOyBcCisgICAgfSB3aGlsZSAo MCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9HQVRIRVJfSEFMRldPUkRfRFYoRUEsIE9GRlNFVCwgSURY LCBJRFgyLCBJRFhfSCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElP TihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgKDIgKiBJRFgyICsgSURYX0gpLCAxKTsgXAorICAg IH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX1dPUkRRKEVBLCBPRkZTRVQs IElEWCwgUSwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElPTihFQSwg T0ZGU0VULCBJRFgsIExFTiwgNCwgSURYLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmR0VU UUJJVChRc1YsIDQgKiBJRFggKyBpMCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZM T0dfVlRDTV9HQVRIRVJfSEFMRldPUkRRKEVBLCBPRkZTRVQsIElEWCwgUSwgTEVOKSBcCisgICAg ZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwg SURYLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmR0VUUUJJVChRc1YsIDIgKiBJRFggKyBp MCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9HQVRIRVJfSEFMRldP UkRRX0RWKEVBLCBPRkZTRVQsIElEWCwgSURYMiwgSURYX0gsIFEsIExFTikgXAorICAgIGRvIHsg XAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsICgyICog SURYMiArIElEWF9IKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCAy ICogSURYICsgaTApKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIFNDQVRURVJfT1BfV1JJ VEVfVE9fTUVNKFRZUEUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBlbnYtPnZ0Y21fbG9nLnNpemU7IGkgKz0gc2l6ZW9mKFRZUEUpKSB7IFwKKyAgICAgICAgICAg IGlmIChlbnYtPnZ0Y21fbG9nLm1hc2sudWJbaV0gIT0gMCkgeyBcCisgICAgICAgICAgICAgICAg VFlQRSBkc3QgPSAwOyBcCisgICAgICAgICAgICAgICAgVFlQRSBpbmMgPSAwOyBcCisgICAgICAg ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzaXplb2YoVFlQRSk7IGorKykgeyBcCisgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgdmFsOyBcCisgICAgICAgICAgICAgICAgICAgIGdldF91 c2VyX3U4KHZhbCwgZW52LT52dGNtX2xvZy52YVtpICsgal0pOyBcCisgICAgICAgICAgICAgICAg ICAgIGRzdCB8PSB2YWwgPDwgKDggKiBqKTsgXAorICAgICAgICAgICAgICAgICAgICBpbmMgfD0g ZW52LT52dGNtX2xvZy5kYXRhLnViW2ogKyBpXSA8PCAoOCAqIGopOyBcCisgICAgICAgICAgICAg ICAgICAgIGVudi0+dnRjbV9sb2cubWFzay51YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAg ICAgICAgIGVudi0+dnRjbV9sb2cuZGF0YS51YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAg ICAgfSBcCisgICAgICAgICAgICAgICAgZHN0ICs9IGluYzsgXAorICAgICAgICAgICAgICAgIGZv ciAoaW50IGogPSAwOyBqIDwgc2l6ZW9mKFRZUEUpOyBqKyspIHsgXAorICAgICAgICAgICAgICAg ICAgICBwdXRfdXNlcl91OCgoZHN0ID4+ICg4ICogaikpICYgMHhGRiwgXAorICAgICAgICAgICAg ICAgICAgICAgICAgZW52LT52dGNtX2xvZy52YVtpICsgal0pOyAgXAorICAgICAgICAgICAgICAg IH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVm aW5lIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIEVMRU1fU0laRSwgQkFO S19JRFgsIFFWQUwsIElOKSBcCisgICAgZG8geyBcCisgICAgICAgIGludCBpMDsgXAorICAgICAg ICB0YXJnZXRfdWxvbmcgdmEgPSBFQTsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmFfaGlnaCA9 IEVBICsgTEVOOyBcCisgICAgICAgIGludCBsb2dfYmFuayA9IDA7IFwKKyAgICAgICAgaW50IGxv Z19ieXRlID0gMDsgXAorICAgICAgICBmb3IgKGkwID0gMDsgaTAgPCBFTEVNX1NJWkU7IGkwKysp IHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAoKHZhICsgaTApIDw9IHZhX2hpZ2gpICYmIFFW QUw7IFwKKyAgICAgICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZSA8PCBpMCk7IFwKKyAgICAg ICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIElOLnViW0VMRU1fU0laRSAq IElEWCArIGkwXSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBFTEVNX1NJWkUgKiBJRFgg KyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRD TV9IQUxGV09SRChFQSwgT0ZGU0VULCBJTiwgSURYLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAg ICAgU0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgSURYLCAxLCBJTik7 IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX1dPUkQoRUEsIE9GRlNFVCwg SU4sIElEWCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEs IE9GRlNFVCwgSURYLCBMRU4sIDQsIElEWCwgMSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNk ZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRFEoRUEsIE9GRlNFVCwgSU4sIElEWCwgUSwgTEVOKSBc CisgICAgZG8geyBcCisgICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBM RU4sIDIsIElEWCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFzViwgMiAq IElEWCArIGkwKSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9X T1JEUShFQSwgT0ZGU0VULCBJTiwgSURYLCBRLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAg U0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgNCwgSURYLCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCA0ICogSURYICsgaTApLCBJTik7IFwKKyAg ICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEX0RWKEVBLCBPRkZTRVQs IElOLCBJRFgsIElEWDIsIElEWF9ILCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgU0NBVFRF Ul9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICgyICogSURYMiArIElEWF9IKSwgMSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNk ZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRFFfRFYoRUEsIE9GRlNFVCwgSU4sIElEWCwgUSwgSURY MiwgSURYX0gsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNUSU9OKEVB LCBPRkZTRVQsIElEWCwgTEVOLCAyLCAoMiAqIElEWDIgKyBJRFhfSCksIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBmR0VUUUJJVChRc1YsIDIgKiBJRFggKyBpMCksIElOKTsgXAorICAgIH0g d2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRVJFTEVBU0UoRUEsIFRZUEUpIFwKKyAgICBkbyB7IFwK KyAgICAgICAgZlZfQUxfQ0hFQ0soRUEsIGZWRUNTSVpFKCkgLSAxKTsgXAorICAgIH0gd2hpbGUg KDApCisjZGVmaW5lIGZMT0FETU1WX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgRFNUKSBcCisgICAg ZG8geyBcCisgICAgICAgIGZWX0FMX0NIRUNLKEVBLCBBTElHTk1FTlQgLSAxKTsgXAorICAgICAg ICBtZW1fbG9hZF92ZWN0b3IoZW52LCBFQSAmIH4oQUxJR05NRU5UIC0gMSksIExFTiwgJkRTVC51 YlswXSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmTE9BRE1NVihFQSwgRFNUKSBmTE9B RE1NVl9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwgRFNUKQorI2RlZmluZSBmTE9BRE1N VlVfQUwoRUEsIEFMSUdOTUVOVCwgTEVOLCBEU1QpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgdWlu dDMyX3Qgc2l6ZTIgPSAoRUEpICYgKEFMSUdOTUVOVCAtIDEpOyBcCisgICAgICAgIHVpbnQzMl90 IHNpemUxID0gTEVOIC0gc2l6ZTI7IFwKKyAgICAgICAgbWVtX2xvYWRfdmVjdG9yKGVudiwgRUEg KyBzaXplMSwgc2l6ZTIsICZEU1QudWJbc2l6ZTFdKTsgXAorICAgICAgICBtZW1fbG9hZF92ZWN0 b3IoZW52LCBFQSwgc2l6ZTEsICZEU1QudWJbMF0pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZp bmUgZkxPQURNTVZVKEVBLCBEU1QpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKChFQSAmIChm VkVDU0laRSgpIC0gMSkpID09IDApIHsgXAorICAgICAgICAgICAgZkxPQURNTVZfQUwoRUEsIGZW RUNTSVpFKCksIGZWRUNTSVpFKCksIERTVCk7IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAg ICAgICAgZkxPQURNTVZVX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgpLCBEU1QpOyBcCisg ICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVl9BTChFQSwgQUxJ R05NRU5ULCBMRU4sIFNSQykgXAorICAgIGRvICB7IFwKKyAgICAgICAgZlZfQUxfQ0hFQ0soRUEs IEFMSUdOTUVOVCAtIDEpOyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0b3IoZW52LCBFQSAmIH4o QUxJR05NRU5UIC0gMSksIHNsb3QsIExFTiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICZT UkMudWJbMF0sIE5VTEwsIGZhbHNlKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZTVE9S RU1NVihFQSwgU1JDKSBmU1RPUkVNTVZfQUwoRUEsIGZWRUNTSVpFKCksIGZWRUNTSVpFKCksIFNS QykKKyNkZWZpbmUgZlNUT1JFTU1WUV9BTChFQSwgQUxJR05NRU5ULCBMRU4sIFNSQywgTUFTSykg XAorICAgIGRvIHsgXAorICAgICAgICBNTVZlY3RvciBtYXNrdmVjOyBcCisgICAgICAgIGludCBp OyBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmVkVDU0laRSgpOyBpKyspIHsgXAorICAgICAg ICAgICAgbWFza3ZlYy51YltpXSA9IGZHRVRRQklUKE1BU0ssIGkpOyBcCisgICAgICAgIH0gXAor ICAgICAgICBtZW1fc3RvcmVfdmVjdG9yKGVudiwgRUEgJiB+KEFMSUdOTUVOVCAtIDEpLCBzbG90 LCBMRU4sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmU1JDLnViWzBdLCAmbWFza3ZlYy51 YlswXSwgZmFsc2UpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WUShFQSwg U1JDLCBNQVNLKSBcCisgICAgZlNUT1JFTU1WUV9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUo KSwgU1JDLCBNQVNLKQorI2RlZmluZSBmU1RPUkVNTVZOUV9BTChFQSwgQUxJR05NRU5ULCBMRU4s IFNSQywgTUFTSykgXAorICAgIGRvIHsgXAorICAgICAgICBNTVZlY3RvciBtYXNrdmVjOyBcCisg ICAgICAgIGludCBpOyBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmVkVDU0laRSgpOyBpKysp IHsgXAorICAgICAgICAgICAgbWFza3ZlYy51YltpXSA9IGZHRVRRQklUKE1BU0ssIGkpOyBcCisg ICAgICAgIH0gXAorICAgICAgICBmVl9BTF9DSEVDSyhFQSwgQUxJR05NRU5UIC0gMSk7IFwKKyAg ICAgICAgbWVtX3N0b3JlX3ZlY3RvcihlbnYsIEVBICYgfihBTElHTk1FTlQgLSAxKSwgc2xvdCwg TEVOLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJlNSQy51YlswXSwgJm1hc2t2ZWMudWJb MF0sIHRydWUpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WTlEoRUEsIFNS QywgTUFTSykgXAorICAgIGZTVE9SRU1NVk5RX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgp LCBTUkMsIE1BU0spCisjZGVmaW5lIGZTVE9SRU1NVlVfQUwoRUEsIEFMSUdOTUVOVCwgTEVOLCBT UkMpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgdWludDMyX3Qgc2l6ZTEgPSBBTElHTk1FTlQgLSAo KEVBKSAmIChBTElHTk1FTlQgLSAxKSk7IFwKKyAgICAgICAgdWludDMyX3Qgc2l6ZTI7IFwKKyAg ICAgICAgaWYgKHNpemUxID4gTEVOKSB7IFwKKyAgICAgICAgICAgIHNpemUxID0gTEVOOyBcCisg ICAgICAgIH0gXAorICAgICAgICBzaXplMiA9IExFTiAtIHNpemUxOyBcCisgICAgICAgIG1lbV9z dG9yZV92ZWN0b3IoZW52LCBFQSArIHNpemUxLCAxLCBzaXplMiwgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICZTUkMudWJbc2l6ZTFdLCBOVUxMLCBmYWxzZSk7IFwKKyAgICAgICAgbWVtX3N0 b3JlX3ZlY3RvcihlbnYsIEVBLCAwLCBzaXplMSwgJlNSQy51YlswXSwgTlVMTCwgZmFsc2UpOyBc CisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WVShFQSwgU1JDKSBcCisgICAgZG8g eyBcCisgICAgICAgIGlmICgoRUEgJiAoZlZFQ1NJWkUoKSAtIDEpKSA9PSAwKSB7IFwKKyAgICAg ICAgICAgIGZTVE9SRU1NVl9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwgU1JDKTsgXAor ICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICBmU1RPUkVNTVZVX0FMKEVBLCBmVkVDU0la RSgpLCBmVkVDU0laRSgpLCBTUkMpOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisj ZGVmaW5lIGZTVE9SRU1NVlFVX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JDLCBNQVNLKSBcCisg ICAgZG8geyBcCisgICAgICAgIHVpbnQzMl90IHNpemUxID0gQUxJR05NRU5UIC0gKChFQSkgJiAo QUxJR05NRU5UIC0gMSkpOyBcCisgICAgICAgIHVpbnQzMl90IHNpemUyOyBcCisgICAgICAgIE1N VmVjdG9yIG1hc2t2ZWM7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAgICAgZm9yIChpID0gMDsg aSA8IGZWRUNTSVpFKCk7IGkrKykgeyBcCisgICAgICAgICAgICBtYXNrdmVjLnViW2ldID0gZkdF VFFCSVQoTUFTSywgaSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGlmIChzaXplMSA+IExFTikg eyBcCisgICAgICAgICAgICBzaXplMSA9IExFTjsgXAorICAgICAgICB9IFwKKyAgICAgICAgc2l6 ZTIgPSBMRU4gLSBzaXplMTsgXAorICAgICAgICBtZW1fc3RvcmVfdmVjdG9yKGVudiwgRUEgKyBz aXplMSwgMSwgc2l6ZTIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmU1JDLnViW3NpemUx XSwgJm1hc2t2ZWMudWJbc2l6ZTFdLCBmYWxzZSk7IFwKKyAgICAgICAgbWVtX3N0b3JlX3ZlY3Rv cihlbnYsIEVBLCBzaXplMSwgJlNSQy51YlswXSwgJm1hc2t2ZWMudWJbMF0sIGZhbHNlKTsgXAor ICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVk5RVV9BTChFQSwgQUxJR05NRU5ULCBM RU4sIFNSQywgTUFTSykgXAorICAgIGRvIHsgXAorICAgICAgICB1aW50MzJfdCBzaXplMSA9IEFM SUdOTUVOVCAtICgoRUEpICYgKEFMSUdOTUVOVCAtIDEpKTsgXAorICAgICAgICB1aW50MzJfdCBz aXplMjsgXAorICAgICAgICBNTVZlY3RvciBtYXNrdmVjOyBcCisgICAgICAgIGludCBpOyBcCisg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBmVkVDU0laRSgpOyBpKyspIHsgXAorICAgICAgICAgICAg bWFza3ZlYy51YltpXSA9IGZHRVRRQklUKE1BU0ssIGkpOyBcCisgICAgICAgIH0gXAorICAgICAg ICBpZiAoc2l6ZTEgPiBMRU4pIHsgXAorICAgICAgICAgICAgc2l6ZTEgPSBMRU47IFwKKyAgICAg ICAgfSBcCisgICAgICAgIHNpemUyID0gTEVOIC0gc2l6ZTE7IFwKKyAgICAgICAgbWVtX3N0b3Jl X3ZlY3RvcihlbnYsIEVBICsgc2l6ZTEsIDEsIHNpemUyLCBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgJlNSQy51YltzaXplMV0sICZtYXNrdmVjLnViW3NpemUxXSwgdHJ1ZSk7IFwKKyAgICAg ICAgbWVtX3N0b3JlX3ZlY3RvcihlbnYsIEVBLCAwLCBzaXplMSwgJlNSQy51YlswXSwgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICZtYXNrdmVjLnViWzBdLCB0cnVlKTsgXAorICAgIH0gd2hp bGUgKDApCisjZGVmaW5lIGZWRk9SRUFDSChXSURUSCwgVkFSKSBmb3IgKFZBUiA9IDA7IFZBUiA8 IGZWRUxFTShXSURUSCk7IFZBUisrKQorI2RlZmluZSBmVkFSUkFZX0VMRU1FTlRfQUNDRVNTKEFS UkFZLCBUWVBFLCBJTkRFWCkgXAorICAgIEFSUkFZLnZbKElOREVYKSAvIChmVkVDU0laRSgpIC8g KHNpemVvZihBUlJBWS5UWVBFWzBdKSkpXS5UWVBFWyhJTkRFWCkgJSBcCisgICAgKGZWRUNTSVpF KCkgLyAoc2l6ZW9mKEFSUkFZLlRZUEVbMF0pKSldCisKKyNpZm5kZWYgUUVNVV9HRU5FUkFURQor LyogR3JhYnMgdGhlIC50bXAgZGF0YSwgd2hlcmV2ZXIgaXQgaXMsIGFuZCBjbGVhcnMgdGhlIC50 bXAgc3RhdHVzICovCisvKiBVc2VkIGZvciB2aGlzdCAqLworc3RhdGljIGlubGluZSBNTVZlY3Rv ciBtbXZlY192dG1wX2RhdGEoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgVlJlZ01hc2sg dnNlbCA9IGVudi0+VlJlZ3NfdXBkYXRlZF90bXA7CisgICAgTU1WZWN0b3IgcmV0OworICAgIGlu dCBpZHggPSBjbG8zMih+cmV2Yml0MzIodnNlbCkpOworICAgIGlmICh2c2VsID09IDApIHsKKyAg ICAgICAgcHJpbnRmKCJbVU5ERUZJTkVEXSBubyAudG1wIGxvYWQgd2hlbiBpbXBsaWNpdGx5IHJl cXVpcmVkLi4uIik7CisgICAgfQorICAgIHJldCA9IGVudi0+dG1wX1ZSZWdzW2lkeF07CisgICAg ZW52LT5WUmVnc191cGRhdGVkX3RtcCA9IDA7CisgICAgcmV0dXJuIHJldDsKK30KKyNkZWZpbmUg ZlRNUFZEQVRBKCkgbW12ZWNfdnRtcF9kYXRhKGVudikKKyNlbmRpZgorI2RlZmluZSBmVlNBVERX KFUsIFYpIGZWU0FUVygoKCgobG9uZyBsb25nKVUpIDw8IDMyKSB8IGZaWFROKDMyLCA2NCwgVikp KQorI2RlZmluZSBmVkFTTF9TQVRISShVLCBWKSBmVlNBVFcoKChVKSA8PCAxKSB8ICgoVikgPj4g MzEpKQorI2RlZmluZSBmVlVBRERTQVQoV0lEVEgsIFUsIFYpIFwKKyAgICBmVlNBVFVOKFdJRFRI LCBmWlhUTihXSURUSCwgMiAqIFdJRFRILCBVKSArIGZaWFROKFdJRFRILCAyICogV0lEVEgsIFYp KQorI2RlZmluZSBmVlNBRERTQVQoV0lEVEgsIFUsIFYpIFwKKyAgICBmVlNBVE4oV0lEVEgsIGZT WFROKFdJRFRILCAyICogV0lEVEgsIFUpICsgZlNYVE4oV0lEVEgsIDIgKiBXSURUSCwgVikpCisj ZGVmaW5lIGZWVVNVQlNBVChXSURUSCwgVSwgVikgXAorICAgIGZWU0FUVU4oV0lEVEgsIGZaWFRO KFdJRFRILCAyICogV0lEVEgsIFUpIC0gZlpYVE4oV0lEVEgsIDIgKiBXSURUSCwgVikpCisjZGVm aW5lIGZWU1NVQlNBVChXSURUSCwgVSwgVikgXAorICAgIGZWU0FUTihXSURUSCwgZlNYVE4oV0lE VEgsIDIgKiBXSURUSCwgVSkgLSBmU1hUTihXSURUSCwgMiAqIFdJRFRILCBWKSkKKyNkZWZpbmUg ZlZBVkdVKFdJRFRILCBVLCBWKSBcCisgICAgKChmWlhUTihXSURUSCwgMiAqIFdJRFRILCBVKSAr IGZaWFROKFdJRFRILCAyICogV0lEVEgsIFYpKSA+PiAxKQorI2RlZmluZSBmVkFWR1VSTkQoV0lE VEgsIFUsIFYpIFwKKyAgICAoKGZaWFROKFdJRFRILCAyICogV0lEVEgsIFUpICsgZlpYVE4oV0lE VEgsIDIgKiBXSURUSCwgVikgKyAxKSA+PiAxKQorI2RlZmluZSBmVk5BVkdVKFdJRFRILCBVLCBW KSBcCisgICAgKChmWlhUTihXSURUSCwgMiAqIFdJRFRILCBVKSAtIGZaWFROKFdJRFRILCAyICog V0lEVEgsIFYpKSA+PiAxKQorI2RlZmluZSBmVk5BVkdVUk5EU0FUKFdJRFRILCBVLCBWKSBcCisg ICAgZlZTQVRVTihXSURUSCwgKChmWlhUTihXSURUSCwgMiAqIFdJRFRILCBVKSAtIFwKKyAgICAg ICAgICAgICAgICAgICAgIGZaWFROKFdJRFRILCAyICogV0lEVEgsIFYpICsgMSkgPj4gMSkpCisj ZGVmaW5lIGZWQVZHUyhXSURUSCwgVSwgVikgXAorICAgICgoZlNYVE4oV0lEVEgsIDIgKiBXSURU SCwgVSkgKyBmU1hUTihXSURUSCwgMiAqIFdJRFRILCBWKSkgPj4gMSkKKyNkZWZpbmUgZlZBVkdT Uk5EKFdJRFRILCBVLCBWKSBcCisgICAgKChmU1hUTihXSURUSCwgMiAqIFdJRFRILCBVKSArIGZT WFROKFdJRFRILCAyICogV0lEVEgsIFYpICsgMSkgPj4gMSkKKyNkZWZpbmUgZlZOQVZHUyhXSURU SCwgVSwgVikgXAorICAgICgoZlNYVE4oV0lEVEgsIDIgKiBXSURUSCwgVSkgLSBmU1hUTihXSURU SCwgMiAqIFdJRFRILCBWKSkgPj4gMSkKKyNkZWZpbmUgZlZOQVZHU1JORChXSURUSCwgVSwgVikg XAorICAgICgoZlNYVE4oV0lEVEgsIDIgKiBXSURUSCwgVSkgLSBmU1hUTihXSURUSCwgMiAqIFdJ RFRILCBWKSArIDEpID4+IDEpCisjZGVmaW5lIGZWTkFWR1NSTkRTQVQoV0lEVEgsIFUsIFYpIFwK KyAgICBmVlNBVE4oV0lEVEgsICgoZlNYVE4oV0lEVEgsIDIgKiBXSURUSCwgVSkgLSBcCisgICAg ICAgICAgICAgICAgICAgIGZTWFROKFdJRFRILCAyICogV0lEVEgsIFYpICsgMSkgPj4gMSkpCisj ZGVmaW5lIGZWTk9ST1VORChWQUwsIFNIQU1UKSBWQUwKKyNkZWZpbmUgZlZOT1NBVChWQUwpIFZB TAorI2RlZmluZSBmVlJPVU5EKFZBTCwgU0hBTVQpIFwKKyAgICAoKFZBTCkgKyAoKChTSEFNVCkg PiAwKSA/ICgxTEwgPDwgKChTSEFNVCkgLSAxKSkgOiAwKSkKKyNkZWZpbmUgZkNBUlJZX0ZST01f QUREMzIoQSwgQiwgQykgXAorICAgICgoKGZaWFROKDMyLCA2NCwgQSkgKyBmWlhUTigzMiwgNjQs IEIpICsgQykgPj4gMzIpICYgMSkKKyNkZWZpbmUgZlVBUkNIX05PVEVfUFVNUF80WCgpCisjZGVm aW5lIGZVQVJDSF9OT1RFX1BVTVBfMlgoKQorCisjZGVmaW5lIElWMURFQUQoKQorI2VuZGlmCi0t IAoyLjcuNAoK