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.5 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,UPPERCASE_50_75,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 E0C61C433EF for ; Mon, 20 Sep 2021 21:36:38 +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 82C2A60FC1 for ; Mon, 20 Sep 2021 21:36:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 82C2A60FC1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:38872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mSQxp-0003QB-CW for qemu-devel@archiver.kernel.org; Mon, 20 Sep 2021 17:36:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60410) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSQmR-000214-LQ for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:24:51 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:9868) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mSQmK-00028P-FR for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:24:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1632173084; x=1663709084; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZP9T+8GuL5qqDITXHHX/aZi9PUNjTg0chlMcQtxwgLU=; b=lxV96yqhe8sjU5mYijHs3e0wVqJG5sW07F5DCb8LwL9FPWxav+5OvihW YrVtPRXy/dcyOaBMWy2KGkTwPCt7VoPnwrt7l+pXn5giqDMdJV4vVbBxg fEt/b9kEX5/+hLFBNJEqgcPsavIwJ5XqxrP0flyRAA7LjFSg4cK55ENfa I=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-02.qualcomm.com with ESMTP; 20 Sep 2021 14:24:36 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg01-sd.qualcomm.com with ESMTP; 20 Sep 2021 14:24:36 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 9E1C51410; Mon, 20 Sep 2021 16:24:35 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v3 05/30] Hexagon HVX (target/hexagon) macros Date: Mon, 20 Sep 2021 16:24:00 -0500 Message-Id: <1632173065-18522-6-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1632173065-18522-1-git-send-email-tsimpson@quicinc.com> References: <1632173065-18522-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.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-Spam_score_int: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 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.25, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 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, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" bWFjcm9zIHRvIGludGVyZmFjZSB3aXRoIHRoZSBnZW5lcmF0b3IKbWFjcm9zIHJlZmVyZW5jZWQg aW4gaW5zdHJ1Y3Rpb24gc2VtYW50aWNzCgpTaWduZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8 dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFnb24vbWFjcm9zLmggICAgICAg fCAgMjIgKysrCiB0YXJnZXQvaGV4YWdvbi9tbXZlYy9tYWNyb3MuaCB8IDM0MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzYzIGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9tbXZlYy9tYWNy b3MuaAoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL21hY3Jvcy5oIGIvdGFyZ2V0L2hleGFn b24vbWFjcm9zLmgKaW5kZXggMDk0YjhkYS4uZDFkMDM0OCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hl eGFnb24vbWFjcm9zLmgKKysrIGIvdGFyZ2V0L2hleGFnb24vbWFjcm9zLmgKQEAgLTI2OSw2ICsy NjksMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbl9wcmVkX2NhbmNlbChUQ0d2IHByZWQsIGlu dCBzbG90X251bSkKIAogI2RlZmluZSBmTkVXUkVHX1NUKFZBTCkgKFZBTCkKIAorI2RlZmluZSBm VlNBVFVWQUxOKE4sIFZBTCkgXAorICAgICh7IFwKKyAgICAgICAgKCgoaW50KShWQUwpKSA8IDAp ID8gMCA6ICgoMUxMIDw8IChOKSkgLSAxKTsgXAorICAgIH0pCiAjZGVmaW5lIGZTQVRVVkFMTihO LCBWQUwpIFwKICAgICAoeyBcCiAgICAgICAgIGZTRVRfT1ZFUkZMT1coKTsgXApAQCAtMjc5LDEw ICsyODMsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbl9wcmVkX2NhbmNlbChUQ0d2IHByZWQs IGludCBzbG90X251bSkKICAgICAgICAgZlNFVF9PVkVSRkxPVygpOyBcCiAgICAgICAgICgoVkFM KSA8IDApID8gKC0oMUxMIDw8ICgoTikgLSAxKSkpIDogKCgxTEwgPDwgKChOKSAtIDEpKSAtIDEp OyBcCiAgICAgfSkKKyNkZWZpbmUgZlZTQVRWQUxOKE4sIFZBTCkgXAorICAgICh7IFwKKyAgICAg ICAgKChWQUwpIDwgMCkgPyAoLSgxTEwgPDwgKChOKSAtIDEpKSkgOiAoKDFMTCA8PCAoKE4pIC0g MSkpIC0gMSk7IFwKKyAgICB9KQogI2RlZmluZSBmWlhUTihOLCBNLCBWQUwpICgoKE4pICE9IDAp ID8gZXh0cmFjdDY0KChWQUwpLCAwLCAoTikpIDogMExMKQogI2RlZmluZSBmU1hUTihOLCBNLCBW QUwpICgoKE4pICE9IDApID8gc2V4dHJhY3Q2NCgoVkFMKSwgMCwgKE4pKSA6IDBMTCkKICNkZWZp bmUgZlNBVE4oTiwgVkFMKSBcCiAgICAgKChmU1hUTihOLCA2NCwgVkFMKSA9PSAoVkFMKSkgPyAo VkFMKSA6IGZTQVRWQUxOKE4sIFZBTCkpCisjZGVmaW5lIGZWU0FUTihOLCBWQUwpIFwKKyAgICAo KGZTWFROKE4sIDY0LCBWQUwpID09IChWQUwpKSA/IChWQUwpIDogZlZTQVRWQUxOKE4sIFZBTCkp CiAjZGVmaW5lIGZBRERTQVQ2NChEU1QsIEEsIEIpIFwKICAgICBkbyB7IFwKICAgICAgICAgdWlu dDY0X3QgX19hID0gZkNBU1Q4dShBKTsgXApAQCAtMzA1LDEyICszMTUsMTggQEAgc3RhdGljIGlu bGluZSB2b2lkIGdlbl9wcmVkX2NhbmNlbChUQ0d2IHByZWQsIGludCBzbG90X251bSkKICAgICAg ICAgICAgIERTVCA9IF9fc3VtOyBcCiAgICAgICAgIH0gXAogICAgIH0gd2hpbGUgKDApCisjZGVm aW5lIGZWU0FUVU4oTiwgVkFMKSBcCisgICAgKChmWlhUTihOLCA2NCwgVkFMKSA9PSAoVkFMKSkg PyAoVkFMKSA6IGZWU0FUVVZBTE4oTiwgVkFMKSkKICNkZWZpbmUgZlNBVFVOKE4sIFZBTCkgXAog ICAgICgoZlpYVE4oTiwgNjQsIFZBTCkgPT0gKFZBTCkpID8gKFZBTCkgOiBmU0FUVVZBTE4oTiwg VkFMKSkKICNkZWZpbmUgZlNBVEgoVkFMKSAoZlNBVE4oMTYsIFZBTCkpCiAjZGVmaW5lIGZTQVRV SChWQUwpIChmU0FUVU4oMTYsIFZBTCkpCisjZGVmaW5lIGZWU0FUSChWQUwpIChmVlNBVE4oMTYs IFZBTCkpCisjZGVmaW5lIGZWU0FUVUgoVkFMKSAoZlZTQVRVTigxNiwgVkFMKSkKICNkZWZpbmUg ZlNBVFVCKFZBTCkgKGZTQVRVTig4LCBWQUwpKQogI2RlZmluZSBmU0FUQihWQUwpIChmU0FUTig4 LCBWQUwpKQorI2RlZmluZSBmVlNBVFVCKFZBTCkgKGZWU0FUVU4oOCwgVkFMKSkKKyNkZWZpbmUg ZlZTQVRCKFZBTCkgKGZWU0FUTig4LCBWQUwpKQogI2RlZmluZSBmSU1NRVhUKElNTSkgKElNTSA9 IElNTSkKICNkZWZpbmUgZk1VU1RfSU1NRVhUKElNTSkgZklNTUVYVChJTU0pCiAKQEAgLTQxNyw2 ICs0MzMsOCBAQCBzdGF0aWMgaW5saW5lIFRDR3YgZ2VuX3JlYWRfaXJlZyhUQ0d2IHJlc3VsdCwg VENHdiB2YWwsIGludCBzaGlmdCkKICNkZWZpbmUgZkNBU1Q0cyhBKSAoKGludDMyX3QpKEEpKQog I2RlZmluZSBmQ0FTVDh1KEEpICgodWludDY0X3QpKEEpKQogI2RlZmluZSBmQ0FTVDhzKEEpICgo aW50NjRfdCkoQSkpCisjZGVmaW5lIGZDQVNUMl8ycyhBKSAoKGludDE2X3QpKEEpKQorI2RlZmlu ZSBmQ0FTVDJfMnUoQSkgKCh1aW50MTZfdCkoQSkpCiAjZGVmaW5lIGZDQVNUNF80cyhBKSAoKGlu dDMyX3QpKEEpKQogI2RlZmluZSBmQ0FTVDRfNHUoQSkgKCh1aW50MzJfdCkoQSkpCiAjZGVmaW5l IGZDQVNUNF84cyhBKSAoKGludDY0X3QpKChpbnQzMl90KShBKSkpCkBAIC01MTQsNyArNTMyLDkg QEAgc3RhdGljIGlubGluZSBUQ0d2IGdlbl9yZWFkX2lyZWcoVENHdiByZXN1bHQsIFRDR3YgdmFs LCBpbnQgc2hpZnQpCiAjZGVmaW5lIGZQTV9NKFJFRywgTVZBTCkgICAgZG8geyBSRUcgPSBSRUcg KyAoTVZBTCk7IH0gd2hpbGUgKDApCiAjZW5kaWYKICNkZWZpbmUgZlNDQUxFKE4sIEEpICgoKGlu dDY0X3QpKEEpKSA8PCBOKQorI2RlZmluZSBmVlNBVFcoQSkgZlZTQVROKDMyLCAoKGxvbmcgbG9u ZylBKSkKICNkZWZpbmUgZlNBVFcoQSkgZlNBVE4oMzIsICgobG9uZyBsb25nKUEpKQorI2RlZmlu ZSBmVlNBVChBKSBmVlNBVE4oMzIsIChBKSkKICNkZWZpbmUgZlNBVChBKSBmU0FUTigzMiwgKEEp KQogI2RlZmluZSBmU0FUX09SSUdfU0hMKEEsIE9SSUdfUkVHKSBcCiAgICAgKCgoKGludDMyX3Qp KChmU0FUKEEpKSBeICgoaW50MzJfdCkoT1JJR19SRUcpKSkpIDwgMCkgXApAQCAtNjUxLDEyICs2 NzEsMTQgQEAgc3RhdGljIGlubGluZSBUQ0d2IGdlbl9yZWFkX2lyZWcoVENHdiByZXN1bHQsIFRD R3YgdmFsLCBpbnQgc2hpZnQpCiAgICAgICAgICAgICBmU0VUQklUKGosIERTVCwgVkFMKTsgXAog ICAgICAgICB9IFwKICAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmQ09VTlRPTkVTXzIoVkFMKSBj dHBvcDE2KFZBTCkKICNkZWZpbmUgZkNPVU5UT05FU180KFZBTCkgY3Rwb3AzMihWQUwpCiAjZGVm aW5lIGZDT1VOVE9ORVNfOChWQUwpIGN0cG9wNjQoVkFMKQogI2RlZmluZSBmQlJFVl84KFZBTCkg cmV2Yml0NjQoVkFMKQogI2RlZmluZSBmQlJFVl80KFZBTCkgcmV2Yml0MzIoVkFMKQogI2RlZmlu ZSBmQ0wxXzgoVkFMKSBjbG82NChWQUwpCiAjZGVmaW5lIGZDTDFfNChWQUwpIGNsbzMyKFZBTCkK KyNkZWZpbmUgZkNMMV8yKFZBTCkgKGNsejMyKH4odWludDE2X3QpKFZBTCkgJiAweGZmZmYpIC0g MTYpCiAjZGVmaW5lIGZJTlRFUkxFQVZFKE9ERCwgRVZFTikgaW50ZXJsZWF2ZShPREQsIEVWRU4p CiAjZGVmaW5lIGZERUlOVEVSTEVBVkUoTUlYRUQpIGRlaW50ZXJsZWF2ZShNSVhFRCkKICNkZWZp bmUgZkhJREUoQSkgQQpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbW12ZWMvbWFjcm9zLmgg Yi90YXJnZXQvaGV4YWdvbi9tbXZlYy9tYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lMmQxZTY1Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vbW12 ZWMvbWFjcm9zLmgKQEAgLTAsMCArMSwzNDEgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTkt MjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lm bmRlZiBIRVhBR09OX01NVkVDX01BQ1JPU19ICisjZGVmaW5lIEhFWEFHT05fTU1WRUNfTUFDUk9T X0gKKworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11L2hvc3QtdXRpbHMu aCIKKyNpbmNsdWRlICJhcmNoLmgiCisjaW5jbHVkZSAibW12ZWMvc3lzdGVtX2V4dF9tbXZlYy5o IgorCisjaWZuZGVmIFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgVmRWICAgICAgKCooTU1WZWN0b3Ig KikoVmRWX3ZvaWQpKQorI2RlZmluZSBWc1YgICAgICAoKihNTVZlY3RvciAqKShWc1Zfdm9pZCkp CisjZGVmaW5lIFZ1ViAgICAgICgqKE1NVmVjdG9yICopKFZ1Vl92b2lkKSkKKyNkZWZpbmUgVnZW ICAgICAgKCooTU1WZWN0b3IgKikoVnZWX3ZvaWQpKQorI2RlZmluZSBWd1YgICAgICAoKihNTVZl Y3RvciAqKShWd1Zfdm9pZCkpCisjZGVmaW5lIFZ4ViAgICAgICgqKE1NVmVjdG9yICopKFZ4Vl92 b2lkKSkKKyNkZWZpbmUgVnlWICAgICAgKCooTU1WZWN0b3IgKikoVnlWX3ZvaWQpKQorCisjZGVm aW5lIFZkZFYgICAgICgqKE1NVmVjdG9yUGFpciAqKShWZGRWX3ZvaWQpKQorI2RlZmluZSBWdXVW ICAgICAoKihNTVZlY3RvclBhaXIgKikoVnV1Vl92b2lkKSkKKyNkZWZpbmUgVnZ2ViAgICAgKCoo TU1WZWN0b3JQYWlyICopKFZ2dlZfdm9pZCkpCisjZGVmaW5lIFZ4eFYgICAgICgqKE1NVmVjdG9y UGFpciAqKShWeHhWX3ZvaWQpKQorCisjZGVmaW5lIFFlViAgICAgICgqKE1NUVJlZyAqKShRZVZf dm9pZCkpCisjZGVmaW5lIFFkViAgICAgICgqKE1NUVJlZyAqKShRZFZfdm9pZCkpCisjZGVmaW5l IFFzViAgICAgICgqKE1NUVJlZyAqKShRc1Zfdm9pZCkpCisjZGVmaW5lIFF0ViAgICAgICgqKE1N UVJlZyAqKShRdFZfdm9pZCkpCisjZGVmaW5lIFF1ViAgICAgICgqKE1NUVJlZyAqKShRdVZfdm9p ZCkpCisjZGVmaW5lIFF2ViAgICAgICgqKE1NUVJlZyAqKShRdlZfdm9pZCkpCisjZGVmaW5lIFF4 ViAgICAgICgqKE1NUVJlZyAqKShReFZfdm9pZCkpCisjZW5kaWYKKworI2RlZmluZSBMT0dfVlRD TV9CWVRFKFZBLCBNQVNLLCBWQUwsIElEWCkgXAorICAgIGRvIHsgXAorICAgICAgICBlbnYtPnZ0 Y21fbG9nLmRhdGEudWJbSURYXSA9IChWQUwpOyBcCisgICAgICAgIGlmIChNQVNLKSB7IFwKKyAg ICAgICAgICAgIHNldF9iaXQoKElEWCksIGVudi0+dnRjbV9sb2cubWFzayk7IFwKKyAgICAgICAg fSBlbHNlIHsgXAorICAgICAgICAgICAgY2xlYXJfYml0KChJRFgpLCBlbnYtPnZ0Y21fbG9nLm1h c2spOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLnZhW0lEWF0gPSAoVkEp 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 IEI7IEIgPSB0bXA7IH0gd2hpbGUgKDApCisjZGVmaW5lIGZWX0FMX0NIRUNLKEVBLCBNQVNLKSBc CisgICAgaWYgKChFQSkgJiAoTUFTSykpIHsgXAorICAgICAgICB3YXJuKCJhbGlnbmluZyBtaXNh bGlnbmVkIHZlY3Rvci4gRUE9JTA4eCIsIChFQSkpOyBcCisgICAgfQorI2RlZmluZSBmU0NBVFRF Ul9JTklUKFJFR0lPTl9TVEFSVCwgTEVOR1RILCBFTEVNRU5UX1NJWkUpIFwKKyAgICBtZW1fdmVj dG9yX3NjYXR0ZXJfaW5pdChlbnYsIHNsb3QsIFJFR0lPTl9TVEFSVCwgTEVOR1RILCBFTEVNRU5U X1NJWkUpCisjZGVmaW5lIGZHQVRIRVJfSU5JVChSRUdJT05fU1RBUlQsIExFTkdUSCwgRUxFTUVO VF9TSVpFKSBcCisgICAgbWVtX3ZlY3Rvcl9nYXRoZXJfaW5pdChlbnYsIFJFR0lPTl9TVEFSVCwg TEVOR1RILCBFTEVNRU5UX1NJWkUpCisjZGVmaW5lIGZTQ0FUVEVSX0ZJTklTSChPUCkKKyNkZWZp bmUgZkdBVEhFUl9GSU5JU0goKQorI2RlZmluZSBmTE9HX1NDQVRURVJfT1AoU0laRSkgXAorICAg IGRvIHsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLm9wID0gdHJ1ZTsgXAorICAgICAgICBlbnYt PnZ0Y21fbG9nLm9wX3NpemUgPSBTSVpFOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZM T0dfVlRDTV9XT1JEX0lOQ1JFTUVOVChFQSwgT0ZGU0VULCBJTkMsIElEWCwgQUxJR05NRU5ULCBM RU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50IGxvZ19ieXRlID0gMDsgXAorICAgICAgICB0 YXJnZXRfdWxvbmcgdmEgPSBFQTsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmFfaGlnaCA9IEVB ICsgTEVOOyBcCisgICAgICAgIGZvciAoaW50IGkwID0gMDsgaTAgPCA0OyBpMCsrKSB7IFwKKyAg ICAgICAgICAgIGxvZ19ieXRlID0gKHZhICsgaTApIDw9IHZhX2hpZ2g7IFwKKyAgICAgICAgICAg IExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIElOQy4gdWJbNCAqIElEWCArIGkwXSwg XAorICAgICAgICAgICAgICAgICAgICAgICAgICA0ICogSURYICsgaTApOyBcCisgICAgICAgIH0g XAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVNRU5U KEVBLCBPRkZTRVQsIElOQywgSURYLCBBTElHTk1FTlQsIExFTikgXAorICAgIGRvIHsgXAorICAg ICAgICBpbnQgbG9nX2J5dGUgPSAwOyBcCisgICAgICAgIHRhcmdldF91bG9uZyB2YSA9IEVBOyBc CisgICAgICAgIHRhcmdldF91bG9uZyB2YV9oaWdoID0gRUEgKyBMRU47IFwKKyAgICAgICAgZm9y IChpbnQgaTAgPSAwOyBpMCA8IDI7IGkwKyspIHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAo dmEgKyBpMCkgPD0gdmFfaGlnaDsgXAorICAgICAgICAgICAgTE9HX1ZUQ01fQllURSh2YSArIGkw LCBsb2dfYnl0ZSwgSU5DLnViWzIgKiBJRFggKyBpMF0sIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgMiAqIElEWCArIGkwKTsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCisj ZGVmaW5lIGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVNRU5UX0RWKEVBLCBPRkZTRVQsIElOQywg SURYLCBJRFgyLCBJRFhfSCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBTElHTk1FTlQsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBpbnQgbG9nX2J5dGUg PSAwOyBcCisgICAgICAgIHRhcmdldF91bG9uZyB2YSA9IEVBOyBcCisgICAgICAgIHRhcmdldF91 bG9uZyB2YV9oaWdoID0gRUEgKyBMRU47IFwKKyAgICAgICAgZm9yIChpbnQgaTAgPSAwOyBpMCA8 IDI7IGkwKyspIHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAodmEgKyBpMCkgPD0gdmFfaGln aDsgXAorICAgICAgICAgICAgTE9HX1ZUQ01fQllURSh2YSArIGkwLCBsb2dfYnl0ZSwgSU5DLnVi WzIgKiBJRFggKyBpMF0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIElEWCArIGkw KTsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBOT1RFIC0gV2lsbCB0aGlz IGFsd2F5cyBiZSB0bXBfVlJlZ3NbMF07ICovCisjZGVmaW5lIEdBVEhFUl9GVU5DVElPTihFQSwg T0ZGU0VULCBJRFgsIExFTiwgRUxFTUVOVF9TSVpFLCBCQU5LX0lEWCwgUVZBTCkgXAorICAgIGRv IHsgXAorICAgICAgICBpbnQgaTA7IFwKKyAgICAgICAgdGFyZ2V0X3Vsb25nIHZhID0gRUE7IFwK KyAgICAgICAgdGFyZ2V0X3Vsb25nIHZhX2hpZ2ggPSBFQSArIExFTjsgXAorICAgICAgICB1aW50 cHRyX3QgcmEgPSBHRVRQQygpOyBcCisgICAgICAgIGludCBsb2dfYmFuayA9IDA7IFwKKyAgICAg ICAgaW50IGxvZ19ieXRlID0gMDsgXAorICAgICAgICBmb3IgKGkwID0gMDsgaTAgPCBFTEVNRU5U X1NJWkU7IGkwKyspIHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAoKHZhICsgaTApIDw9IHZh X2hpZ2gpICYmIFFWQUw7IFwKKyAgICAgICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZSA8PCBp MCk7IFwKKyAgICAgICAgICAgIHVpbnQ4X3QgQjsgXAorICAgICAgICAgICAgQiA9IGNwdV9sZHVi X2RhdGFfcmEoZW52LCBFQSArIGkwLCByYSk7IFwKKyAgICAgICAgICAgIGVudi0+dG1wX1ZSZWdz WzBdLnViW0VMRU1FTlRfU0laRSAqIElEWCArIGkwXSA9IEI7IFwKKyAgICAgICAgICAgIExPR19W VENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIEIsIEVMRU1FTlRfU0laRSAqIElEWCArIGkwKTsg XAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0dBVEhF Ul9XT1JEKEVBLCBPRkZTRVQsIElEWCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIEdBVEhF Ul9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgNCwgSURYLCAxKTsgXAorICAgIH0gd2hp bGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEKEVBLCBPRkZTRVQsIElE WCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElPTihFQSwgT0ZGU0VU LCBJRFgsIExFTiwgMiwgSURYLCAxKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9H X1ZUQ01fR0FUSEVSX0hBTEZXT1JEX0RWKEVBLCBPRkZTRVQsIElEWCwgSURYMiwgSURYX0gsIExF TikgXAorICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURY LCBMRU4sIDIsICgyICogSURYMiArIElEWF9IKSwgMSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2Rl ZmluZSBmVkxPR19WVENNX0dBVEhFUl9XT1JEUShFQSwgT0ZGU0VULCBJRFgsIFEsIExFTikgXAor ICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4s IDQsIElEWCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCA0ICogSURY ICsgaTApKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX0hB TEZXT1JEUShFQSwgT0ZGU0VULCBJRFgsIFEsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBH QVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsIElEWCwgXAorICAgICAgICAg ICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCAyICogSURYICsgaTApKTsgXAorICAgIH0gd2hp bGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUV9EVihFQSwgT0ZGU0VU LCBJRFgsIElEWDIsIElEWF9ILCBRLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgR0FUSEVS X0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCAyLCAoMiAqIElEWDIgKyBJRFhfSCksIFwK KyAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFzViwgMiAqIElEWCArIGkwKSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBTQ0FUVEVSX09QX1dSSVRFX1RPX01FTShUWVBFKSBc CisgICAgZG8geyBcCisgICAgICAgIHVpbnRwdHJfdCByYSA9IEdFVFBDKCk7IFwKKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBlbnYtPnZ0Y21fbG9nLnNpemU7IGkgKz0gc2l6ZW9mKFRZUEUp KSB7IFwKKyAgICAgICAgICAgIGlmICh0ZXN0X2JpdChpLCBlbnYtPnZ0Y21fbG9nLm1hc2spKSB7 IFwKKyAgICAgICAgICAgICAgICBUWVBFIGRzdCA9IDA7IFwKKyAgICAgICAgICAgICAgICBUWVBF IGluYyA9IDA7IFwKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNpemVvZihU WVBFKTsgaisrKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCB2YWw7IFwKKyAgICAg ICAgICAgICAgICAgICAgdmFsID0gY3B1X2xkdWJfZGF0YV9yYShlbnYsIGVudi0+dnRjbV9sb2cu dmFbaSArIGpdLCByYSk7IFwKKyAgICAgICAgICAgICAgICAgICAgZHN0IHw9IHZhbCA8PCAoOCAq IGopOyBcCisgICAgICAgICAgICAgICAgICAgIGluYyB8PSBlbnYtPnZ0Y21fbG9nLmRhdGEudWJb aiArIGldIDw8ICg4ICogaik7IFwKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJfYml0KGogKyBp LCBlbnYtPnZ0Y21fbG9nLm1hc2spOyBcCisgICAgICAgICAgICAgICAgICAgIGVudi0+dnRjbV9s b2cuZGF0YS51YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAg ICAgICAgZHN0ICs9IGluYzsgXAorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg c2l6ZW9mKFRZUEUpOyBqKyspIHsgXAorICAgICAgICAgICAgICAgICAgICBjcHVfc3RiX2RhdGFf cmEoZW52LCBlbnYtPnZ0Y21fbG9nLnZhW2kgKyBqXSwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGRzdCA+PiAoOCAqIGopKSAmIDB4RkYsIHJhKTsgXAorICAgICAgICAg ICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDAp CisjZGVmaW5lIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIEVMRU1fU0la RSwgQkFOS19JRFgsIFFWQUwsIElOKSBcCisgICAgZG8geyBcCisgICAgICAgIGludCBpMDsgXAor ICAgICAgICB0YXJnZXRfdWxvbmcgdmEgPSBFQTsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmFf aGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGludCBsb2dfYmFuayA9IDA7IFwKKyAgICAgICAg aW50IGxvZ19ieXRlID0gMDsgXAorICAgICAgICBmb3IgKGkwID0gMDsgaTAgPCBFTEVNX1NJWkU7 IGkwKyspIHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAoKHZhICsgaTApIDw9IHZhX2hpZ2gp ICYmIFFWQUw7IFwKKyAgICAgICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZSA8PCBpMCk7IFwK KyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIElOLnViW0VMRU1f U0laRSAqIElEWCArIGkwXSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBFTEVNX1NJWkUg KiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZM T0dfVlRDTV9IQUxGV09SRChFQSwgT0ZGU0VULCBJTiwgSURYLCBMRU4pIFwKKyAgICBkbyB7IFwK KyAgICAgICAgU0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgSURYLCAx LCBJTik7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX1dPUkQoRUEsIE9G RlNFVCwgSU4sIElEWCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIFNDQVRURVJfRlVOQ1RJ T04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDQsIElEWCwgMSwgSU4pOyBcCisgICAgfSB3aGlsZSAo MCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRFEoRUEsIE9GRlNFVCwgSU4sIElEWCwgUSwg TEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwg SURYLCBMRU4sIDIsIElEWCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFz ViwgMiAqIElEWCArIGkwKSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0df VlRDTV9XT1JEUShFQSwgT0ZGU0VULCBJTiwgSURYLCBRLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAg ICAgICAgU0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgNCwgSURYLCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCA0ICogSURYICsgaTApLCBJTik7 IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEX0RWKEVBLCBP RkZTRVQsIElOLCBJRFgsIElEWDIsIElEWF9ILCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAg U0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICgyICogSURYMiArIElEWF9IKSwgMSwgSU4pOyBcCisgICAgfSB3aGlsZSAo MCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRFFfRFYoRUEsIE9GRlNFVCwgSU4sIElEWCwg USwgSURYMiwgSURYX0gsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNU SU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCAyLCAoMiAqIElEWDIgKyBJRFhfSCksIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBmR0VUUUJJVChRc1YsIDIgKiBJRFggKyBpMCksIElOKTsgXAor ICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRVJFTEVBU0UoRUEsIFRZUEUpIFwKKyAgICBk byB7IFwKKyAgICAgICAgZlZfQUxfQ0hFQ0soRUEsIGZWRUNTSVpFKCkgLSAxKTsgXAorICAgIH0g d2hpbGUgKDApCisjaWZkZWYgUUVNVV9HRU5FUkFURQorI2RlZmluZSBmTE9BRE1NVihFQSwgRFNU KSBnZW5fdnJlZ19sb2FkKGN0eCwgRFNUIyNfb2ZmLCBFQSwgdHJ1ZSkKKyNlbmRpZgorI2lmZGVm IFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgZkxPQURNTVZVKEVBLCBEU1QpIGdlbl92cmVnX2xvYWQo Y3R4LCBEU1QjI19vZmYsIEVBLCBmYWxzZSkKKyNlbmRpZgorI2lmZGVmIFFFTVVfR0VORVJBVEUK KyNkZWZpbmUgZlNUT1JFTU1WKEVBLCBTUkMpIFwKKyAgICBnZW5fdnJlZ19zdG9yZShjdHgsIGlu c24sIHBrdCwgRUEsIFNSQyMjX29mZiwgaW5zbi0+c2xvdCwgdHJ1ZSkKKyNlbmRpZgorI2lmZGVm IFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgZlNUT1JFTU1WUShFQSwgU1JDLCBNQVNLKSBcCisgICAg Z2VuX3ZyZWdfbWFza2VkX3N0b3JlKGN0eCwgRUEsIFNSQyMjX29mZiwgTUFTSyMjX29mZiwgaW5z bi0+c2xvdCwgZmFsc2UpCisjZW5kaWYKKyNpZmRlZiBRRU1VX0dFTkVSQVRFCisjZGVmaW5lIGZT VE9SRU1NVk5RKEVBLCBTUkMsIE1BU0spIFwKKyAgICBnZW5fdnJlZ19tYXNrZWRfc3RvcmUoY3R4 LCBFQSwgU1JDIyNfb2ZmLCBNQVNLIyNfb2ZmLCBpbnNuLT5zbG90LCB0cnVlKQorI2VuZGlmCisj aWZkZWYgUUVNVV9HRU5FUkFURQorI2RlZmluZSBmU1RPUkVNTVZVKEVBLCBTUkMpIFwKKyAgICBn ZW5fdnJlZ19zdG9yZShjdHgsIGluc24sIHBrdCwgRUEsIFNSQyMjX29mZiwgaW5zbi0+c2xvdCwg ZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgZlZGT1JFQUNIKFdJRFRILCBWQVIpIGZvciAoVkFSID0g MDsgVkFSIDwgZlZFTEVNKFdJRFRIKTsgVkFSKyspCisjZGVmaW5lIGZWQVJSQVlfRUxFTUVOVF9B Q0NFU1MoQVJSQVksIFRZUEUsIElOREVYKSBcCisgICAgQVJSQVkudlsoSU5ERVgpIC8gKGZWRUNT SVpFKCkgLyAoc2l6ZW9mKEFSUkFZLlRZUEVbMF0pKSldLlRZUEVbKElOREVYKSAlIFwKKyAgICAo ZlZFQ1NJWkUoKSAvIChzaXplb2YoQVJSQVkuVFlQRVswXSkpKV0KKworI2RlZmluZSBmVlNBVERX 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