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 B938CC433E0 for ; Wed, 20 Jan 2021 03:49:19 +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 1322B22B42 for ; Wed, 20 Jan 2021 03:49:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1322B22B42 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]:36726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l24Ug-0004qF-0o for qemu-devel@archiver.kernel.org; Tue, 19 Jan 2021 22:49:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l24Bk-0007NP-CC for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:29:44 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:53878) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l24Be-0007Vl-BR for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:29:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1611113378; x=1642649378; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KT0cZymJNq/CLMECyefStjA1wU7z6HjYlGU1HZomKUc=; b=hVGsd1wbOz83ATFHoVzn+sO+2HIZVgWRSoRUz8n/r30XPAlN8bSy1AIQ BXaJveH/MyA/boCW0RvvBO8403+MD/CkGp4chClfdfrXsiKCIxv9gjCc1 HJLc1gRNfZx874/Dz2jqlirZI37/64zX6fD1DBF1JxMscqTWL9mFZXT+F 8=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-02.qualcomm.com with ESMTP; 19 Jan 2021 19:29:27 -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; 19 Jan 2021 19:29:27 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 03C222B08; Tue, 19 Jan 2021 21:29:27 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v7 24/35] Hexagon (target/hexagon) macros Date: Tue, 19 Jan 2021 21:28:57 -0600 Message-Id: <1611113349-24906-25-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1611113349-24906-1-git-send-email-tsimpson@quicinc.com> References: <1611113349-24906-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: -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, philmd@redhat.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" bWFjcm9zIHRvIGludGVyZmFjZSB3aXRoIHRoZSBnZW5lcmF0b3IKbWFjcm9zIHJlZmVyZW5jZWQg aW4gaW5zdHJ1Y3Rpb24gc2VtYW50aWNzCgpTaWduZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8 dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFnb24vbWFjcm9zLmggfCA1OTEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUg Y2hhbmdlZCwgNTkxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4 YWdvbi9tYWNyb3MuaAoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL21hY3Jvcy5oIGIvdGFy Z2V0L2hleGFnb24vbWFjcm9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OGNhZGMxMgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL21hY3Jvcy5oCkBAIC0w LDAgKzEsNTkxIEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdPTl9NQUNS T1NfSAorI2RlZmluZSBIRVhBR09OX01BQ1JPU19ICisKKyNpbmNsdWRlICJjcHUuaCIKKyNpbmNs dWRlICJoZXhfcmVncy5oIgorI2luY2x1ZGUgInJlZ19maWVsZHMuaCIKKworI2lmZGVmIFFFTVVf R0VORVJBVEUKKyNkZWZpbmUgUkVBRF9SRUcoZGVzdCwgTlVNKSAgICAgICAgICAgICAgZ2VuX3Jl YWRfcmVnKGRlc3QsIE5VTSkKKyNkZWZpbmUgUkVBRF9QUkVHKGRlc3QsIE5VTSkgICAgICAgICAg ICAgZ2VuX3JlYWRfcHJlZyhkZXN0LCAoTlVNKSkKKyNlbHNlCisjZGVmaW5lIFJFQURfUkVHKE5V TSkgICAgICAgICAgICAgICAgICAgIChlbnYtPmdwclsoTlVNKV0pCisjZGVmaW5lIFJFQURfUFJF RyhOVU0pICAgICAgICAgICAgICAgICAgIChlbnYtPnByZWRbTlVNXSkKKworI2RlZmluZSBXUklU RV9SUkVHKE5VTSwgVkFMKSAgICAgICAgICAgICBsb2dfcmVnX3dyaXRlKGVudiwgTlVNLCBWQUws IHNsb3QpCisjZGVmaW5lIFdSSVRFX1BSRUcoTlVNLCBWQUwpICAgICAgICAgICAgIGxvZ19wcmVk X3dyaXRlKGVudiwgTlVNLCBWQUwpCisjZW5kaWYKKworI2RlZmluZSBQQ0FMSUdOIDQKKyNkZWZp bmUgUENBTElHTl9NQVNLIChQQ0FMSUdOIC0gMSkKKworI2RlZmluZSBHRVRfRklFTEQoRklFTEQs IFJFR0lOKSBcCisgICAgZkVYVFJBQ1RVX0JJVFMoUkVHSU4sIHJlZ19maWVsZF9pbmZvW0ZJRUxE XS53aWR0aCwgXAorICAgICAgICAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZz ZXQpCisKKyNpZmRlZiBRRU1VX0dFTkVSQVRFCisjZGVmaW5lIEdFVF9VU1JfRklFTEQoRklFTEQs IERTVCkgXAorICAgIHRjZ19nZW5fZXh0cmFjdF90bChEU1QsIGhleF9ncHJbSEVYX1JFR19VU1Jd LCBcCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQs IFwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVnX2ZpZWxkX2luZm9bRklFTERdLndpZHRoKQor CisjZGVmaW5lIFRZUEVfSU5UKFgpICAgICAgICAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxl X3AodHlwZW9mKFgpLCBpbnQpCisjZGVmaW5lIFRZUEVfVENHVihYKSAgICAgICAgIF9fYnVpbHRp bl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKFgpLCBUQ0d2KQorI2RlZmluZSBUWVBFX1RDR1Zf STY0KFgpICAgICBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZihYKSwgVENHdl9p NjQpCisKKyNkZWZpbmUgU0VUX1VTUl9GSUVMRF9GVU5DKFgpIFwKKyAgICBfX2J1aWx0aW5fY2hv b3NlX2V4cHIoVFlQRV9JTlQoWCksIFwKKyAgICAgICAgZ2VuX3NldF91c3JfZmllbGRpLCBcCisg ICAgICAgIF9fYnVpbHRpbl9jaG9vc2VfZXhwcihUWVBFX1RDR1YoWCksIFwKKyAgICAgICAgICAg IGdlbl9zZXRfdXNyX2ZpZWxkLCAodm9pZCkwKSkKKyNkZWZpbmUgU0VUX1VTUl9GSUVMRChGSUVM RCwgVkFMKSBcCisgICAgU0VUX1VTUl9GSUVMRF9GVU5DKFZBTCkoRklFTEQsIFZBTCkKKyNlbHNl CisjZGVmaW5lIEdFVF9VU1JfRklFTEQoRklFTEQpIFwKKyAgICBmRVhUUkFDVFVfQklUUyhlbnYt PmdwcltIRVhfUkVHX1VTUl0sIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS53aWR0aCwgXAorICAgICAg ICAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQpCisKKyNkZWZpbmUgU0VU X1VTUl9GSUVMRChGSUVMRCwgVkFMKSBcCisgICAgZklOU0VSVF9CSVRTKGVudi0+Z3ByW0hFWF9S RUdfVVNSXSwgcmVnX2ZpZWxkX2luZm9bRklFTERdLndpZHRoLCBcCisgICAgICAgICAgICAgICAg IHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQsIChWQUwpKQorI2VuZGlmCisKKyNpZmRlZiBR RU1VX0dFTkVSQVRFCisvKgorICogU2VjdGlvbiA1LjUgb2YgdGhlIEhleGFnb24gVjY3IFByb2dy YW1tZXIncyBSZWZlcmVuY2UgTWFudWFsCisgKgorICogU2xvdCAxIHN0b3JlIHdpdGggc2xvdCAw IGxvYWQKKyAqIEEgc2xvdCAxIHN0b3JlIG9wZXJhdGlvbiB3aXRoIGEgc2xvdCAwIGxvYWQgb3Bl cmF0aW9uIGNhbiBhcHBlYXIgaW4gYSBwYWNrZXQuCisgKiBUaGUgcGFja2V0IGF0dHJpYnV0ZSA6 bWVtX25vc2h1ZiBpbmhpYml0cyB0aGUgaW5zdHJ1Y3Rpb24gcmVvcmRlcmluZyB0aGF0CisgKiB3 b3VsZCBvdGhlcndpc2UgYmUgZG9uZSBieSB0aGUgYXNzZW1ibGVyLiBGb3IgZXhhbXBsZToKKyAq ICAgICB7CisgKiAgICAgICAgIG1lbXcoUjUpID0gUjIgLy8gc2xvdCAxIHN0b3JlCisgKiAgICAg ICAgIFIzID0gbWVtaChSNikgLy8gc2xvdCAwIGxvYWQKKyAqICAgICB9Om1lbV9ub3NodWYKKyAq IFVubGlrZSBtb3N0IHBhY2tldGl6ZWQgb3BlcmF0aW9ucywgdGhlc2UgbWVtb3J5IG9wZXJhdGlv bnMgYXJlIG5vdCBleGVjdXRlZAorICogaW4gcGFyYWxsZWwgKFNlY3Rpb24gMy4zLjEpLiBJbnN0 ZWFkLCB0aGUgc3RvcmUgaW5zdHJ1Y3Rpb24gaW4gU2xvdCAxCisgKiBlZmZlY3RpdmVseSBleGVj dXRlcyBmaXJzdCwgZm9sbG93ZWQgYnkgdGhlIGxvYWQgaW5zdHJ1Y3Rpb24gaW4gU2xvdCAwLiBJ ZgorICogdGhlIGFkZHJlc3NlcyBvZiB0aGUgdHdvIG9wZXJhdGlvbnMgYXJlIG92ZXJsYXBwaW5n LCB0aGUgbG9hZCB3aWxsIHJlY2VpdmUKKyAqIHRoZSBuZXdseSBzdG9yZWQgZGF0YS4gVGhpcyBm ZWF0dXJlIGlzIHN1cHBvcnRlZCBpbiBwcm9jZXNzb3IgdmVyc2lvbnMKKyAqIFY2NSBvciBncmVh dGVyLgorICoKKyAqCisgKiBGb3IgcWVtdSwgd2UgbG9vayBmb3IgYSBsb2FkIGluIHNsb3QgMCB3 aGVuIHRoZXJlIGlzICBhIHN0b3JlIGluIHNsb3QgMQorICogaW4gdGhlIHNhbWUgcGFja2V0LiAg V2hlbiB3ZSBzZWUgdGhpcywgd2UgY2FsbCBhIGhlbHBlciB0aGF0IG1lcmdlcyB0aGUKKyAqIGJ5 dGVzIGZyb20gdGhlIHN0b3JlIGJ1ZmZlciB3aXRoIHRoZSB2YWx1ZSBsb2FkZWQgZnJvbSBtZW1v cnkuCisgKi8KKyNkZWZpbmUgQ0hFQ0tfTk9TSFVGIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYg KGluc24tPnNsb3QgPT0gMCAmJiBwa3QtPnBrdF9oYXNfc3RvcmVfczEpIHsgXAorICAgICAgICAg ICAgcHJvY2Vzc19zdG9yZShjdHgsIDEpOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDAp CisKKyNkZWZpbmUgTUVNX0xPQUQxcyhEU1QsIFZBKSBcCisgICAgZG8geyBcCisgICAgICAgIENI RUNLX05PU0hVRjsgXAorICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQ4cyhEU1QsIFZBLCBjdHgtPm1l bV9pZHgpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgTUVNX0xPQUQxdShEU1QsIFZBKSBc CisgICAgZG8geyBcCisgICAgICAgIENIRUNLX05PU0hVRjsgXAorICAgICAgICB0Y2dfZ2VuX3Fl bXVfbGQ4dShEU1QsIFZBLCBjdHgtPm1lbV9pZHgpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZp bmUgTUVNX0xPQUQycyhEU1QsIFZBKSBcCisgICAgZG8geyBcCisgICAgICAgIENIRUNLX05PU0hV RjsgXAorICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQxNnMoRFNULCBWQSwgY3R4LT5tZW1faWR4KTsg XAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIE1FTV9MT0FEMnUoRFNULCBWQSkgXAorICAgIGRv IHsgXAorICAgICAgICBDSEVDS19OT1NIVUY7IFwKKyAgICAgICAgdGNnX2dlbl9xZW11X2xkMTZ1 KERTVCwgVkEsIGN0eC0+bWVtX2lkeCk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBNRU1f TE9BRDRzKERTVCwgVkEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgQ0hFQ0tfTk9TSFVGOyBcCisg ICAgICAgIHRjZ19nZW5fcWVtdV9sZDMycyhEU1QsIFZBLCBjdHgtPm1lbV9pZHgpOyBcCisgICAg fSB3aGlsZSAoMCkKKyNkZWZpbmUgTUVNX0xPQUQ0dShEU1QsIFZBKSBcCisgICAgZG8geyBcCisg ICAgICAgIENIRUNLX05PU0hVRjsgXAorICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQzMnMoRFNULCBW QSwgY3R4LT5tZW1faWR4KTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIE1FTV9MT0FEOHUo RFNULCBWQSkgXAorICAgIGRvIHsgXAorICAgICAgICBDSEVDS19OT1NIVUY7IFwKKyAgICAgICAg dGNnX2dlbl9xZW11X2xkNjQoRFNULCBWQSwgY3R4LT5tZW1faWR4KTsgXAorICAgIH0gd2hpbGUg KDApCisjZWxzZQorI2RlZmluZSBNRU1fTE9BRDFzKFZBKSAoKGludDhfdCltZW1fbG9hZDEoZW52 LCBzbG90LCBWQSkpCisjZGVmaW5lIE1FTV9MT0FEMXUoVkEpICgodWludDhfdCltZW1fbG9hZDEo ZW52LCBzbG90LCBWQSkpCisjZGVmaW5lIE1FTV9MT0FEMnMoVkEpICgoaW50MTZfdCltZW1fbG9h ZDIoZW52LCBzbG90LCBWQSkpCisjZGVmaW5lIE1FTV9MT0FEMnUoVkEpICgodWludDE2X3QpbWVt X2xvYWQyKGVudiwgc2xvdCwgVkEpKQorI2RlZmluZSBNRU1fTE9BRDRzKFZBKSAoKGludDMyX3Qp bWVtX2xvYWQ0KGVudiwgc2xvdCwgVkEpKQorI2RlZmluZSBNRU1fTE9BRDR1KFZBKSAoKHVpbnQz Ml90KW1lbV9sb2FkNChlbnYsIHNsb3QsIFZBKSkKKyNkZWZpbmUgTUVNX0xPQUQ4cyhWQSkgKChp bnQ2NF90KW1lbV9sb2FkOChlbnYsIHNsb3QsIFZBKSkKKyNkZWZpbmUgTUVNX0xPQUQ4dShWQSkg KCh1aW50NjRfdCltZW1fbG9hZDgoZW52LCBzbG90LCBWQSkpCisKKyNkZWZpbmUgTUVNX1NUT1JF MShWQSwgREFUQSwgU0xPVCkgbG9nX3N0b3JlMzIoZW52LCBWQSwgREFUQSwgMSwgU0xPVCkKKyNk ZWZpbmUgTUVNX1NUT1JFMihWQSwgREFUQSwgU0xPVCkgbG9nX3N0b3JlMzIoZW52LCBWQSwgREFU QSwgMiwgU0xPVCkKKyNkZWZpbmUgTUVNX1NUT1JFNChWQSwgREFUQSwgU0xPVCkgbG9nX3N0b3Jl MzIoZW52LCBWQSwgREFUQSwgNCwgU0xPVCkKKyNkZWZpbmUgTUVNX1NUT1JFOChWQSwgREFUQSwg U0xPVCkgbG9nX3N0b3JlNjQoZW52LCBWQSwgREFUQSwgOCwgU0xPVCkKKyNlbmRpZgorCisjZGVm aW5lIENBTkNFTCBjYW5jZWxfc2xvdChlbnYsIHNsb3QpCisKKyNkZWZpbmUgTE9BRF9DQU5DRUwo RUEpIGRvIHsgQ0FOQ0VMOyB9IHdoaWxlICgwKQorCisjaWZkZWYgUUVNVV9HRU5FUkFURQorc3Rh dGljIGlubGluZSB2b2lkIGdlbl9wcmVkX2NhbmNlbChUQ0d2IHByZWQsIGludCBzbG90X251bSkK KyB7CisgICAgVENHdiBzbG90X21hc2sgPSB0Y2dfY29uc3RfdGwoMSA8PCBzbG90X251bSk7Cisg ICAgVENHdiB0bXAgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3Rf dGwoMCk7CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3RfdGwoMSk7CisgICAgdGNnX2dlbl9vcl90 bChzbG90X21hc2ssIGhleF9zbG90X2NhbmNlbGxlZCwgc2xvdF9tYXNrKTsKKyAgICB0Y2dfZ2Vu X2FuZGlfdGwodG1wLCBwcmVkLCAxKTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRf RVEsIGhleF9zbG90X2NhbmNlbGxlZCwgdG1wLCB6ZXJvLAorICAgICAgICAgICAgICAgICAgICAg ICBzbG90X21hc2ssIGhleF9zbG90X2NhbmNlbGxlZCk7CisgICAgdGNnX3RlbXBfZnJlZShzbG90 X21hc2spOworICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8p OworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKK30KKyNkZWZpbmUgUFJFRF9MT0FEX0NBTkNFTChQ UkVELCBFQSkgXAorICAgIGdlbl9wcmVkX2NhbmNlbChQUkVELCBpbnNuLT5pc19lbmRsb29wID8g NCA6IGluc24tPnNsb3QpCisjZW5kaWYKKworI2RlZmluZSBTVE9SRV9DQU5DRUwoRUEpIHsgZW52 LT5zbG90X2NhbmNlbGxlZCB8PSAoMSA8PCBzbG90KTsgfQorCisjZGVmaW5lIGZNQVgoQSwgQikg KCgoQSkgPiAoQikpID8gKEEpIDogKEIpKQorCisjZGVmaW5lIGZNSU4oQSwgQikgKCgoQSkgPCAo QikpID8gKEEpIDogKEIpKQorCisjZGVmaW5lIGZBQlMoQSkgKCgoQSkgPCAwKSA/ICgtKEEpKSA6 IChBKSkKKyNkZWZpbmUgZklOU0VSVF9CSVRTKFJFRywgV0lEVEgsIE9GRlNFVCwgSU5WQUwpIFwK KyAgICBSRUcgPSAoKFdJRFRIKSA/IGRlcG9zaXQ2NChSRUcsIChPRkZTRVQpLCAoV0lEVEgpLCAo SU5WQUwpKSA6IFJFRykKKyNkZWZpbmUgZkVYVFJBQ1RVX0JJVFMoSU5SRUcsIFdJRFRILCBPRkZT RVQpIFwKKyAgICAoKFdJRFRIKSA/IGV4dHJhY3Q2NCgoSU5SRUcpLCAoT0ZGU0VUKSwgKFdJRFRI KSkgOiAwTEwpCisjZGVmaW5lIGZFWFRSQUNUVV9CSURJUihJTlJFRywgV0lEVEgsIE9GRlNFVCkg XAorICAgIChmWlhUTihXSURUSCwgMzIsIGZCSURJUl9MU0hJRlRSKChJTlJFRyksIChPRkZTRVQp LCA0XzgpKSkKKyNkZWZpbmUgZkVYVFJBQ1RVX1JBTkdFKElOUkVHLCBISUJJVCwgTE9XQklUKSBc CisgICAgKCgoSElCSVQpIC0gKExPV0JJVCkgKyAxKSA/IFwKKyAgICAgICAgZXh0cmFjdDY0KChJ TlJFRyksIChMT1dCSVQpLCAoKEhJQklUKSAtIChMT1dCSVQpICsgMSkpIDogXAorICAgICAgICAw TEwpCisKKyNkZWZpbmUgZjhCSVRTT0YoVkFMKSAoKFZBTCkgPyAweGZmIDogMHgwMCkKKworI2lm ZGVmIFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgZkxTQk9MRChWQUwpIHRjZ19nZW5fYW5kaV90bChM U0IsIChWQUwpLCAxKQorI2Vsc2UKKyNkZWZpbmUgZkxTQk9MRChWQUwpICAoKFZBTCkgJiAxKQor I2VuZGlmCisKKyNpZmRlZiBRRU1VX0dFTkVSQVRFCisjZGVmaW5lIGZMU0JORVcoUFZBTCkgICB0 Y2dfZ2VuX21vdl90bChMU0IsIChQVkFMKSkKKyNkZWZpbmUgZkxTQk5FVzAgICAgICAgIHRjZ19n ZW5fbW92X3RsKExTQiwgaGV4X25ld19wcmVkX3ZhbHVlWzBdKQorI2RlZmluZSBmTFNCTkVXMSAg ICAgICAgdGNnX2dlbl9tb3ZfdGwoTFNCLCBoZXhfbmV3X3ByZWRfdmFsdWVbMV0pCisjZWxzZQor I2RlZmluZSBmTFNCTkVXKFBWQUwpICAgKFBWQUwpCisjZGVmaW5lIGZMU0JORVcwICAgICAgICBu ZXdfcHJlZF92YWx1ZShlbnYsIDApCisjZGVmaW5lIGZMU0JORVcxICAgICAgICBuZXdfcHJlZF92 YWx1ZShlbnYsIDEpCisjZW5kaWYKKworI2lmZGVmIFFFTVVfR0VORVJBVEUKK3N0YXRpYyBpbmxp bmUgdm9pZCBnZW5fbG9naWNhbF9ub3QoVENHdiBkZXN0LCBUQ0d2IHNyYykKK3sKKyAgICBUQ0d2 IG9uZSA9IHRjZ19jb25zdF90bCgxKTsKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7 CisKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfTkUsIGRlc3QsIHNyYywgemVybywg emVybywgb25lKTsKKworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKKyAgICB0Y2dfdGVtcF9mcmVl KHplcm8pOworfQorI2RlZmluZSBmTFNCT0xETk9UKFZBTCkgXAorICAgIGRvIHsgXAorICAgICAg ICB0Y2dfZ2VuX2FuZGlfdGwoTFNCLCAoVkFMKSwgMSk7IFwKKyAgICAgICAgdGNnX2dlbl94b3Jp X3RsKExTQiwgTFNCLCAxKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZMU0JORVdOT1Qo UE5VTSkgXAorICAgIGdlbl9sb2dpY2FsX25vdChMU0IsIChQTlVNKSkKKyNlbHNlCisjZGVmaW5l IGZMU0JORVdOT1QoUE5VTSkgKCFmTFNCTkVXKFBOVU0pKQorI2RlZmluZSBmTFNCT0xETk9UKFZB TCkgKCFmTFNCT0xEKFZBTCkpCisjZGVmaW5lIGZMU0JORVcwTk9UICghZkxTQk5FVzApCisjZGVm aW5lIGZMU0JORVcxTk9UICghZkxTQk5FVzEpCisjZW5kaWYKKworI2RlZmluZSBmTkVXUkVHKFZB TCkgKChpbnQzMl90KShWQUwpKQorCisjZGVmaW5lIGZORVdSRUdfU1QoVkFMKSAoVkFMKQorCisj ZGVmaW5lIGZTQVRVVkFMTihOLCBWQUwpIFwKKyAgICAoeyBcCisgICAgICAgIGZTRVRfT1ZFUkZM T1coKTsgXAorICAgICAgICAoKFZBTCkgPCAwKSA/IDAgOiAoKDFMTCA8PCAoTikpIC0gMSk7IFwK KyAgICB9KQorI2RlZmluZSBmU0FUVkFMTihOLCBWQUwpIFwKKyAgICAoeyBcCisgICAgICAgIGZT RVRfT1ZFUkZMT1coKTsgXAorICAgICAgICAoKFZBTCkgPCAwKSA/ICgtKDFMTCA8PCAoKE4pIC0g MSkpKSA6ICgoMUxMIDw8ICgoTikgLSAxKSkgLSAxKTsgXAorICAgIH0pCisjZGVmaW5lIGZaWFRO KE4sIE0sIFZBTCkgKCgoTikgIT0gMCkgPyBleHRyYWN0NjQoKFZBTCksIDAsIChOKSkgOiAwTEwp CisjZGVmaW5lIGZTWFROKE4sIE0sIFZBTCkgKCgoTikgIT0gMCkgPyBzZXh0cmFjdDY0KChWQUwp LCAwLCAoTikpIDogMExMKQorI2RlZmluZSBmU0FUTihOLCBWQUwpIFwKKyAgICAoKGZTWFROKE4s IDY0LCBWQUwpID09IChWQUwpKSA/IChWQUwpIDogZlNBVFZBTE4oTiwgVkFMKSkKKyNkZWZpbmUg ZkFERFNBVDY0KERTVCwgQSwgQikgXAorICAgIGRvIHsgXAorICAgICAgICB1aW50NjRfdCBfX2Eg PSBmQ0FTVDh1KEEpOyBcCisgICAgICAgIHVpbnQ2NF90IF9fYiA9IGZDQVNUOHUoQik7IFwKKyAg ICAgICAgdWludDY0X3QgX19zdW0gPSBfX2EgKyBfX2I7IFwKKyAgICAgICAgdWludDY0X3QgX194 b3IgPSBfX2EgXiBfX2I7IFwKKyAgICAgICAgY29uc3QgdWludDY0X3QgX19tYXNrID0gMHg4MDAw MDAwMDAwMDAwMDAwVUxMOyBcCisgICAgICAgIGlmIChfX3hvciAmIF9fbWFzaykgeyBcCisgICAg ICAgICAgICBEU1QgPSBfX3N1bTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSBpZiAoKF9f YSBeIF9fc3VtKSAmIF9fbWFzaykgeyBcCisgICAgICAgICAgICBpZiAoX19zdW0gJiBfX21hc2sp IHsgXAorICAgICAgICAgICAgICAgIERTVCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxMOyBcCisgICAg ICAgICAgICAgICAgZlNFVF9PVkVSRkxPVygpOyBcCisgICAgICAgICAgICB9IGVsc2UgeyBcCisg ICAgICAgICAgICAgICAgRFNUID0gMHg4MDAwMDAwMDAwMDAwMDAwTEw7IFwKKyAgICAgICAgICAg ICAgICBmU0VUX09WRVJGTE9XKCk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IGVsc2Ug eyBcCisgICAgICAgICAgICBEU1QgPSBfX3N1bTsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxl ICgwKQorI2RlZmluZSBmU0FUVU4oTiwgVkFMKSBcCisgICAgKChmWlhUTihOLCA2NCwgVkFMKSA9 PSAoVkFMKSkgPyAoVkFMKSA6IGZTQVRVVkFMTihOLCBWQUwpKQorI2RlZmluZSBmU0FUSChWQUwp IChmU0FUTigxNiwgVkFMKSkKKyNkZWZpbmUgZlNBVFVIKFZBTCkgKGZTQVRVTigxNiwgVkFMKSkK KyNkZWZpbmUgZlNBVFVCKFZBTCkgKGZTQVRVTig4LCBWQUwpKQorI2RlZmluZSBmU0FUQihWQUwp IChmU0FUTig4LCBWQUwpKQorI2RlZmluZSBmSU1NRVhUKElNTSkgKElNTSA9IElNTSkKKyNkZWZp bmUgZk1VU1RfSU1NRVhUKElNTSkgZklNTUVYVChJTU0pCisKKyNkZWZpbmUgZlBDQUxJR04oSU1N KSBJTU0gPSAoSU1NICYgflBDQUxJR05fTUFTSykKKworI2RlZmluZSBmUkVBRF9MUigpIChSRUFE X1JFRyhIRVhfUkVHX0xSKSkKKworI2RlZmluZSBmV1JJVEVfTFIoQSkgV1JJVEVfUlJFRyhIRVhf UkVHX0xSLCBBKQorI2RlZmluZSBmV1JJVEVfRlAoQSkgV1JJVEVfUlJFRyhIRVhfUkVHX0ZQLCBB KQorI2RlZmluZSBmV1JJVEVfU1AoQSkgV1JJVEVfUlJFRyhIRVhfUkVHX1NQLCBBKQorCisjZGVm aW5lIGZSRUFEX1NQKCkgKFJFQURfUkVHKEhFWF9SRUdfU1ApKQorI2RlZmluZSBmUkVBRF9MQzAg KFJFQURfUkVHKEhFWF9SRUdfTEMwKSkKKyNkZWZpbmUgZlJFQURfTEMxIChSRUFEX1JFRyhIRVhf UkVHX0xDMSkpCisjZGVmaW5lIGZSRUFEX1NBMCAoUkVBRF9SRUcoSEVYX1JFR19TQTApKQorI2Rl ZmluZSBmUkVBRF9TQTEgKFJFQURfUkVHKEhFWF9SRUdfU0ExKSkKKyNkZWZpbmUgZlJFQURfRlAo KSAoUkVBRF9SRUcoSEVYX1JFR19GUCkpCisjaWZkZWYgRklYTUUKKy8qIEZpZ3VyZSBvdXQgaG93 IHRvIGdldCBpbnNuLT5leHRlbnNpb25fdmFsaWQgdG8gaGVscGVyICovCisjZGVmaW5lIGZSRUFE X0dQKCkgXAorICAgIChpbnNuLT5leHRlbnNpb25fdmFsaWQgPyAwIDogUkVBRF9SRUcoSEVYX1JF R19HUCkpCisjZWxzZQorI2RlZmluZSBmUkVBRF9HUCgpIFJFQURfUkVHKEhFWF9SRUdfR1ApCisj ZW5kaWYKKyNkZWZpbmUgZlJFQURfUEMoKSAoUkVBRF9SRUcoSEVYX1JFR19QQykpCisKKyNkZWZp bmUgZlJFQURfTlBDKCkgKGVudi0+bmV4dF9QQyAmICgweGZmZmZmZmZlKSkKKworI2RlZmluZSBm UkVBRF9QMCgpIChSRUFEX1BSRUcoMCkpCisjZGVmaW5lIGZSRUFEX1AzKCkgKFJFQURfUFJFRygz KSkKKworI2RlZmluZSBmQ0hFQ0tfUENBTElHTihBKQorCisjZGVmaW5lIGZXUklURV9OUEMoQSkg d3JpdGVfbmV3X3BjKGVudiwgQSkKKworI2RlZmluZSBmQlJBTkNIKExPQywgVFlQRSkgICAgICAg ICAgZldSSVRFX05QQyhMT0MpCisjZGVmaW5lIGZKVU1QUihSRUdOTywgVEFSR0VULCBUWVBFKSBm QlJBTkNIKFRBUkdFVCwgQ09GX1RZUEVfSlVNUFIpCisjZGVmaW5lIGZISU5USlIoVEFSR0VUKSB7 IC8qIE5vdCBtb2RlbGxlZCBpbiBxZW11ICovfQorI2RlZmluZSBmQ0FMTChBKSBcCisgICAgZG8g eyBcCisgICAgICAgIGZXUklURV9MUihmUkVBRF9OUEMoKSk7IFwKKyAgICAgICAgZkJSQU5DSChB LCBDT0ZfVFlQRV9DQUxMKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZDQUxMUihBKSBc CisgICAgZG8geyBcCisgICAgICAgIGZXUklURV9MUihmUkVBRF9OUEMoKSk7IFwKKyAgICAgICAg ZkJSQU5DSChBLCBDT0ZfVFlQRV9DQUxMUik7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBm V1JJVEVfTE9PUF9SRUdTMChTVEFSVCwgQ09VTlQpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgV1JJ VEVfUlJFRyhIRVhfUkVHX0xDMCwgQ09VTlQpOyAgXAorICAgICAgICBXUklURV9SUkVHKEhFWF9S RUdfU0EwLCBTVEFSVCk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmV1JJVEVfTE9PUF9S RUdTMShTVEFSVCwgQ09VTlQpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgV1JJVEVfUlJFRyhIRVhf UkVHX0xDMSwgQ09VTlQpOyAgXAorICAgICAgICBXUklURV9SUkVHKEhFWF9SRUdfU0ExLCBTVEFS VCk7XAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZXUklURV9MQzAoVkFMKSBXUklURV9SUkVH KEhFWF9SRUdfTEMwLCBWQUwpCisjZGVmaW5lIGZXUklURV9MQzEoVkFMKSBXUklURV9SUkVHKEhF WF9SRUdfTEMxLCBWQUwpCisKKyNkZWZpbmUgZkNBUlJZX0ZST01fQUREKEEsIEIsIEMpIGNhcnJ5 X2Zyb21fYWRkNjQoQSwgQiwgQykKKworI2RlZmluZSBmU0VUX09WRVJGTE9XKCkgU0VUX1VTUl9G SUVMRChVU1JfT1ZGLCAxKQorI2RlZmluZSBmU0VUX0xQQ0ZHKFZBTCkgU0VUX1VTUl9GSUVMRChV U1JfTFBDRkcsIChWQUwpKQorI2RlZmluZSBmR0VUX0xQQ0ZHIChHRVRfVVNSX0ZJRUxEKFVTUl9M UENGRykpCisjZGVmaW5lIGZXUklURV9QMChWQUwpIFdSSVRFX1BSRUcoMCwgVkFMKQorI2RlZmlu ZSBmV1JJVEVfUDEoVkFMKSBXUklURV9QUkVHKDEsIFZBTCkKKyNkZWZpbmUgZldSSVRFX1AyKFZB TCkgV1JJVEVfUFJFRygyLCBWQUwpCisjZGVmaW5lIGZXUklURV9QMyhWQUwpIFdSSVRFX1BSRUco MywgVkFMKQorI2RlZmluZSBmUEFSVDEoV09SSykgaWYgKHBhcnQxKSB7IFdPUks7IHJldHVybjsg fQorI2RlZmluZSBmQ0FTVDR1KEEpICgodWludDMyX3QpKEEpKQorI2RlZmluZSBmQ0FTVDRzKEEp ICgoaW50MzJfdCkoQSkpCisjZGVmaW5lIGZDQVNUOHUoQSkgKCh1aW50NjRfdCkoQSkpCisjZGVm aW5lIGZDQVNUOHMoQSkgKChpbnQ2NF90KShBKSkKKyNkZWZpbmUgZkNBU1Q0XzRzKEEpICgoaW50 MzJfdCkoQSkpCisjZGVmaW5lIGZDQVNUNF80dShBKSAoKHVpbnQzMl90KShBKSkKKyNkZWZpbmUg ZkNBU1Q0XzhzKEEpICgoaW50NjRfdCkoKGludDMyX3QpKEEpKSkKKyNkZWZpbmUgZkNBU1Q0Xzh1 KEEpICgodWludDY0X3QpKCh1aW50MzJfdCkoQSkpKQorI2RlZmluZSBmQ0FTVDhfOHMoQSkgKChp bnQ2NF90KShBKSkKKyNkZWZpbmUgZkNBU1Q4Xzh1KEEpICgodWludDY0X3QpKEEpKQorI2RlZmlu ZSBmQ0FTVDJfOHMoQSkgKChpbnQ2NF90KSgoaW50MTZfdCkoQSkpKQorI2RlZmluZSBmQ0FTVDJf OHUoQSkgKCh1aW50NjRfdCkoKHVpbnQxNl90KShBKSkpCisjZGVmaW5lIGZaRThfMTYoQSkgKChp bnQxNl90KSgodWludDhfdCkoQSkpKQorI2RlZmluZSBmU0U4XzE2KEEpICgoaW50MTZfdCkoKGlu dDhfdCkoQSkpKQorI2RlZmluZSBmU0UxNl8zMihBKSAoKGludDMyX3QpKChpbnQxNl90KShBKSkp CisjZGVmaW5lIGZaRTE2XzMyKEEpICgodWludDMyX3QpKCh1aW50MTZfdCkoQSkpKQorI2RlZmlu ZSBmU0UzMl82NChBKSAoKGludDY0X3QpKChpbnQzMl90KShBKSkpCisjZGVmaW5lIGZaRTMyXzY0 KEEpICgodWludDY0X3QpKCh1aW50MzJfdCkoQSkpKQorI2RlZmluZSBmU0U4XzMyKEEpICgoaW50 MzJfdCkoKGludDhfdCkoQSkpKQorI2RlZmluZSBmWkU4XzMyKEEpICgoaW50MzJfdCkoKHVpbnQ4 X3QpKEEpKSkKKyNkZWZpbmUgZk1QWThVVShBLCBCKSAoaW50KShmWkU4XzE2KEEpICogZlpFOF8x NihCKSkKKyNkZWZpbmUgZk1QWThVUyhBLCBCKSAoaW50KShmWkU4XzE2KEEpICogZlNFOF8xNihC KSkKKyNkZWZpbmUgZk1QWThTVShBLCBCKSAoaW50KShmU0U4XzE2KEEpICogZlpFOF8xNihCKSkK KyNkZWZpbmUgZk1QWThTUyhBLCBCKSAoaW50KSgoc2hvcnQpKEEpICogKHNob3J0KShCKSkKKyNk ZWZpbmUgZk1QWTE2U1MoQSwgQikgZlNFMzJfNjQoZlNFMTZfMzIoQSkgKiBmU0UxNl8zMihCKSkK KyNkZWZpbmUgZk1QWTE2VVUoQSwgQikgZlpFMzJfNjQoZlpFMTZfMzIoQSkgKiBmWkUxNl8zMihC KSkKKyNkZWZpbmUgZk1QWTE2U1UoQSwgQikgZlNFMzJfNjQoZlNFMTZfMzIoQSkgKiBmWkUxNl8z MihCKSkKKyNkZWZpbmUgZk1QWTE2VVMoQSwgQikgZk1QWTE2U1UoQiwgQSkKKyNkZWZpbmUgZk1Q WTMyU1MoQSwgQikgKGZTRTMyXzY0KEEpICogZlNFMzJfNjQoQikpCisjZGVmaW5lIGZNUFkzMlVV KEEsIEIpIChmWkUzMl82NChBKSAqIGZaRTMyXzY0KEIpKQorI2RlZmluZSBmTVBZMzJTVShBLCBC KSAoZlNFMzJfNjQoQSkgKiBmWkUzMl82NChCKSkKKyNkZWZpbmUgZk1QWTMyMTZTUyhBLCBCKSAo ZlNFMzJfNjQoQSkgKiBmU1hUTigxNiwgNjQsIEIpKQorI2RlZmluZSBmTVBZMzIxNlNVKEEsIEIp IChmU0UzMl82NChBKSAqIGZaWFROKDE2LCA2NCwgQikpCisjZGVmaW5lIGZST1VORChBKSAoQSAr IDB4ODAwMCkKKyNkZWZpbmUgZkNMSVAoRFNULCBTUkMsIFUpIFwKKyAgICBkbyB7IFwKKyAgICAg ICAgaW50MzJfdCBtYXh2ID0gKDEgPDwgVSkgLSAxOyBcCisgICAgICAgIGludDMyX3QgbWludiA9 IC0oMSA8PCBVKTsgXAorICAgICAgICBEU1QgPSBmTUlOKG1heHYsIGZNQVgoU1JDLCBtaW52KSk7 IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmQ1JORChBKSAoKCgoQSkgJiAweDMpID09IDB4 MykgPyAoKEEpICsgMSkgOiAoKEEpKSkKKyNkZWZpbmUgZlJORE4oQSwgTikgKCgoKE4pID09IDAp ID8gKEEpIDogKCgoZlNFMzJfNjQoQSkpICsgKDEgPDwgKChOKSAtIDEpKSkpKSkKKyNkZWZpbmUg ZkNSTkROKEEsIE4pIChjb252X3JvdW5kKEEsIE4pKQorI2RlZmluZSBmQUREMTI4KEEsIEIpIChp bnQxMjhfYWRkKEEsIEIpKQorI2RlZmluZSBmU1VCMTI4KEEsIEIpIChpbnQxMjhfc3ViKEEsIEIp KQorI2RlZmluZSBmU0hJRlRSMTI4KEEsIEIpIChpbnQxMjhfcnNoaWZ0KEEsIEIpKQorI2RlZmlu ZSBmU0hJRlRMMTI4KEEsIEIpIChpbnQxMjhfbHNoaWZ0KEEsIEIpKQorI2RlZmluZSBmQU5EMTI4 KEEsIEIpIChpbnQxMjhfYW5kKEEsIEIpKQorI2RlZmluZSBmQ0FTVDhTXzE2UyhBKSAoaW50MTI4 X2V4dHM2NChBKSkKKyNkZWZpbmUgZkNBU1QxNlNfOFMoQSkgKGludDEyOF9nZXRsbyhBKSkKKwor I2RlZmluZSBmRUFfUkkoUkVHLCBJTU0pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgRUEgPSBSRUcg KyBJTU07IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmRUFfUlJzKFJFRywgUkVHMiwgU0NB TEUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgRUEgPSBSRUcgKyAoUkVHMiA8PCBTQ0FMRSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmRUFfSVJzKElNTSwgUkVHLCBTQ0FMRSkgXAorICAg IGRvIHsgXAorICAgICAgICBFQSA9IElNTSArIChSRUcgPDwgU0NBTEUpOyBcCisgICAgfSB3aGls ZSAoMCkKKworI2lmZGVmIFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgZkVBX0lNTShJTU0pIHRjZ19n ZW5fbW92aV90bChFQSwgSU1NKQorI2RlZmluZSBmRUFfUkVHKFJFRykgdGNnX2dlbl9tb3ZfdGwo RUEsIFJFRykKKyNkZWZpbmUgZlBNX0koUkVHLCBJTU0pICAgICB0Y2dfZ2VuX2FkZGlfdGwoUkVH LCBSRUcsIElNTSkKKyNkZWZpbmUgZlBNX00oUkVHLCBNVkFMKSAgICB0Y2dfZ2VuX2FkZF90bChS RUcsIFJFRywgTVZBTCkKKyNlbHNlCisjZGVmaW5lIGZFQV9JTU0oSU1NKSAgICAgICAgZG8geyBF QSA9IChJTU0pOyB9IHdoaWxlICgwKQorI2RlZmluZSBmRUFfUkVHKFJFRykgICAgICAgIGRvIHsg RUEgPSAoUkVHKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZkVBX0dQSShJTU0pICAgICAgICBkbyB7 IEVBID0gKGZSRUFEX0dQKCkgKyAoSU1NKSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIGZQTV9JKFJF RywgSU1NKSAgICAgZG8geyBSRUcgPSBSRUcgKyAoSU1NKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUg ZlBNX00oUkVHLCBNVkFMKSAgICBkbyB7IFJFRyA9IFJFRyArIChNVkFMKTsgfSB3aGlsZSAoMCkK KyNlbmRpZgorI2RlZmluZSBmU0NBTEUoTiwgQSkgKCgoaW50NjRfdCkoQSkpIDw8IE4pCisjZGVm aW5lIGZTQVRXKEEpIGZTQVROKDMyLCAoKGxvbmcgbG9uZylBKSkKKyNkZWZpbmUgZlNBVChBKSBm U0FUTigzMiwgKEEpKQorI2RlZmluZSBmU0FUX09SSUdfU0hMKEEsIE9SSUdfUkVHKSBcCisgICAg KCgoKGludDMyX3QpKChmU0FUKEEpKSBeICgoaW50MzJfdCkoT1JJR19SRUcpKSkpIDwgMCkgXAor ICAgICAgICA/IGZTQVRWQUxOKDMyLCAoKGludDMyX3QpKE9SSUdfUkVHKSkpIFwKKyAgICAgICAg OiAoKCgoT1JJR19SRUcpID4gMCkgJiYgKChBKSA9PSAwKSkgPyBmU0FUVkFMTigzMiwgKE9SSUdf UkVHKSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZT QVQoQSkpKQorI2RlZmluZSBmUEFTUyhBKSBBCisjZGVmaW5lIGZCSURJUl9TSElGVEwoU1JDLCBT SEFNVCwgUkVHU1RZUEUpIFwKKyAgICAoKChTSEFNVCkgPCAwKSA/ICgoZkNBU1QjI1JFR1NUWVBF KFNSQykgPj4gKCgtKFNIQU1UKSkgLSAxKSkgPj4gMSkgXAorICAgICAgICAgICAgICAgICAgIDog KGZDQVNUIyNSRUdTVFlQRShTUkMpIDw8IChTSEFNVCkpKQorI2RlZmluZSBmQklESVJfQVNISUZU TChTUkMsIFNIQU1ULCBSRUdTVFlQRSkgXAorICAgIGZCSURJUl9TSElGVEwoU1JDLCBTSEFNVCwg UkVHU1RZUEUjI3MpCisjZGVmaW5lIGZCSURJUl9MU0hJRlRMKFNSQywgU0hBTVQsIFJFR1NUWVBF KSBcCisgICAgZkJJRElSX1NISUZUTChTUkMsIFNIQU1ULCBSRUdTVFlQRSMjdSkKKyNkZWZpbmUg ZkJJRElSX0FTSElGVExfU0FUKFNSQywgU0hBTVQsIFJFR1NUWVBFKSBcCisgICAgKCgoU0hBTVQp IDwgMCkgPyAoKGZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpID4+ICgoLShTSEFNVCkpIC0gMSkpID4+ IDEpIFwKKyAgICAgICAgICAgICAgICAgICA6IGZTQVRfT1JJR19TSEwoZkNBU1QjI1JFR1NUWVBF IyNzKFNSQykgPDwgKFNIQU1UKSwgKFNSQykpKQorI2RlZmluZSBmQklESVJfU0hJRlRSKFNSQywg U0hBTVQsIFJFR1NUWVBFKSBcCisgICAgKCgoU0hBTVQpIDwgMCkgPyAoKGZDQVNUIyNSRUdTVFlQ RShTUkMpIDw8ICgoLShTSEFNVCkpIC0gMSkpIDw8IDEpIFwKKyAgICAgICAgICAgICAgICAgICA6 IChmQ0FTVCMjUkVHU1RZUEUoU1JDKSA+PiAoU0hBTVQpKSkKKyNkZWZpbmUgZkJJRElSX0FTSElG VFIoU1JDLCBTSEFNVCwgUkVHU1RZUEUpIFwKKyAgICBmQklESVJfU0hJRlRSKFNSQywgU0hBTVQs IFJFR1NUWVBFIyNzKQorI2RlZmluZSBmQklESVJfTFNISUZUUihTUkMsIFNIQU1ULCBSRUdTVFlQ RSkgXAorICAgIGZCSURJUl9TSElGVFIoU1JDLCBTSEFNVCwgUkVHU1RZUEUjI3UpCisjZGVmaW5l IGZCSURJUl9BU0hJRlRSX1NBVChTUkMsIFNIQU1ULCBSRUdTVFlQRSkgXAorICAgICgoKFNIQU1U KSA8IDApID8gZlNBVF9PUklHX1NITCgoZkNBU1QjI1JFR1NUWVBFIyNzKFNSQykgXAorICAgICAg ICAgICAgICAgICAgICAgICAgPDwgKCgtKFNIQU1UKSkgLSAxKSkgPDwgMSwgKFNSQykpIFwKKyAg ICAgICAgICAgICAgICAgICA6IChmQ0FTVCMjUkVHU1RZUEUjI3MoU1JDKSA+PiAoU0hBTVQpKSkK KyNkZWZpbmUgZkFTSElGVFIoU1JDLCBTSEFNVCwgUkVHU1RZUEUpIChmQ0FTVCMjUkVHU1RZUEUj I3MoU1JDKSA+PiAoU0hBTVQpKQorI2RlZmluZSBmTFNISUZUUihTUkMsIFNIQU1ULCBSRUdTVFlQ RSkgXAorICAgICgoKFNIQU1UKSA+PSA2NCkgPyAwIDogKGZDQVNUIyNSRUdTVFlQRSMjdShTUkMp ID4+IChTSEFNVCkpKQorI2RlZmluZSBmUk9UTChTUkMsIFNIQU1ULCBSRUdTVFlQRSkgXAorICAg ICgoKFNIQU1UKSA9PSAwKSA/IChTUkMpIDogKChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA8PCAo U0hBTVQpKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZkNBU1QjI1JFR1NU WVBFIyN1KFNSQykgPj4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzaXpl b2YoU1JDKSAqIDgpIC0gKFNIQU1UKSkpKSkpCisjZGVmaW5lIGZST1RSKFNSQywgU0hBTVQsIFJF R1NUWVBFKSBcCisgICAgKCgoU0hBTVQpID09IDApID8gKFNSQykgOiAoKGZDQVNUIyNSRUdTVFlQ RSMjdShTUkMpID4+IChTSEFNVCkpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA8PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKHNpemVvZihTUkMpICogOCkgLSAoU0hBTVQpKSkpKSkKKyNkZWZpbmUgZkFTSElG VEwoU1JDLCBTSEFNVCwgUkVHU1RZUEUpIFwKKyAgICAoKChTSEFNVCkgPj0gNjQpID8gMCA6IChm Q0FTVCMjUkVHU1RZUEUjI3MoU1JDKSA8PCAoU0hBTVQpKSkKKworI2lmZGVmIFFFTVVfR0VORVJB VEUKKyNkZWZpbmUgZkxPQUQoTlVNLCBTSVpFLCBTSUdOLCBFQSwgRFNUKSBNRU1fTE9BRCMjU0la RSMjU0lHTihEU1QsIEVBKQorI2Vsc2UKKyNkZWZpbmUgZkxPQUQoTlVNLCBTSVpFLCBTSUdOLCBF QSwgRFNUKSBcCisgICAgRFNUID0gKHNpemUjI1NJWkUjI1NJR04jI190KU1FTV9MT0FEIyNTSVpF IyNTSUdOKEVBKQorI2VuZGlmCisKKyNkZWZpbmUgZk1FTU9QKE5VTSwgU0laRSwgU0lHTiwgRUEs IEZOVFlQRSwgVkFMVUUpCisKKyNkZWZpbmUgZkdFVF9GUkFNRUtFWSgpIFJFQURfUkVHKEhFWF9S RUdfRlJBTUVLRVkpCisjZGVmaW5lIGZGUkFNRV9TQ1JBTUJMRShWQUwpICgoVkFMKSBeIChmQ0FT VDh1KGZHRVRfRlJBTUVLRVkoKSkgPDwgMzIpKQorI2RlZmluZSBmRlJBTUVfVU5TQ1JBTUJMRShW QUwpIGZGUkFNRV9TQ1JBTUJMRShWQUwpCisKKyNpZmRlZiBDT05GSUdfVVNFUl9PTkxZCisjZGVm aW5lIGZGUkFNRUNIRUNLKEFERFIsIEVBKSBkbyB7IH0gd2hpbGUgKDApIC8qIE5vdCBtb2RlbGxl ZCBpbiBsaW51eC11c2VyICovCisjZWxzZQorLyogU3lzdGVtIG1vZGUgbm90IGltcGxlbWVudGVk IHlldCAqLworI2RlZmluZSBmRlJBTUVDSEVDSyhBRERSLCBFQSkgIGdfYXNzZXJ0X25vdF9yZWFj aGVkKCk7CisjZW5kaWYKKworI2lmZGVmIFFFTVVfR0VORVJBVEUKKyNkZWZpbmUgZkxPQURfTE9D S0VEKE5VTSwgU0laRSwgU0lHTiwgRUEsIERTVCkgXAorICAgIGdlbl9sb2FkX2xvY2tlZCMjU0la RSMjU0lHTihEU1QsIEVBLCBjdHgtPm1lbV9pZHgpOworI2VuZGlmCisKKyNkZWZpbmUgZlNUT1JF KE5VTSwgU0laRSwgRUEsIFNSQykgTUVNX1NUT1JFIyNTSVpFKEVBLCBTUkMsIHNsb3QpCisKKyNp ZmRlZiBRRU1VX0dFTkVSQVRFCisjZGVmaW5lIGZTVE9SRV9MT0NLRUQoTlVNLCBTSVpFLCBFQSwg U1JDLCBQUkVEKSBcCisgICAgZ2VuX3N0b3JlX2NvbmRpdGlvbmFsIyNTSVpFKGVudiwgY3R4LCBQ ZE4sIFBSRUQsIEVBLCBTUkMpOworI2VuZGlmCisKKyNkZWZpbmUgZkdFVEJZVEUoTiwgU1JDKSAo KGludDhfdCkoKFNSQyA+PiAoKE4pICogOCkpICYgMHhmZikpCisjZGVmaW5lIGZHRVRVQllURShO LCBTUkMpICgodWludDhfdCkoKFNSQyA+PiAoKE4pICogOCkpICYgMHhmZikpCisKKyNkZWZpbmUg ZlNFVEJZVEUoTiwgRFNULCBWQUwpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgRFNUID0gKERTVCAm IH4oMHgwZmZMTCA8PCAoKE4pICogOCkpKSB8IFwKKyAgICAgICAgKCgodWludDY0X3QpKChWQUwp ICYgMHgwZmZMTCkpIDw8ICgoTikgKiA4KSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBm R0VUSEFMRihOLCBTUkMpICgoaW50MTZfdCkoKFNSQyA+PiAoKE4pICogMTYpKSAmIDB4ZmZmZikp CisjZGVmaW5lIGZHRVRVSEFMRihOLCBTUkMpICgodWludDE2X3QpKChTUkMgPj4gKChOKSAqIDE2 KSkgJiAweGZmZmYpKQorI2RlZmluZSBmU0VUSEFMRihOLCBEU1QsIFZBTCkgXAorICAgIGRvIHsg XAorICAgICAgICBEU1QgPSAoRFNUICYgfigweDBmZmZmTEwgPDwgKChOKSAqIDE2KSkpIHwgXAor ICAgICAgICAoKCh1aW50NjRfdCkoKFZBTCkgJiAweDBmZmZmKSkgPDwgKChOKSAqIDE2KSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU0VUSEFMRncgZlNFVEhBTEYKKyNkZWZpbmUgZlNF VEhBTEZkIGZTRVRIQUxGCisKKyNkZWZpbmUgZkdFVFdPUkQoTiwgU1JDKSBcCisgICAgKChpbnQ2 NF90KSgoaW50MzJfdCkoKFNSQyA+PiAoKE4pICogMzIpKSAmIDB4MGZmZmZmZmZmTEwpKSkKKyNk ZWZpbmUgZkdFVFVXT1JEKE4sIFNSQykgXAorICAgICgodWludDY0X3QpKCh1aW50MzJfdCkoKFNS QyA+PiAoKE4pICogMzIpKSAmIDB4MGZmZmZmZmZmTEwpKSkKKworI2RlZmluZSBmU0VUV09SRChO LCBEU1QsIFZBTCkgXAorICAgIGRvIHsgXAorICAgICAgICBEU1QgPSAoRFNUICYgfigweDBmZmZm ZmZmZkxMIDw8ICgoTikgKiAzMikpKSB8IFwKKyAgICAgICAgICAgICAgKCgoVkFMKSAmIDB4MGZm ZmZmZmZmTEwpIDw8ICgoTikgKiAzMikpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBm U0VUQklUKE4sIERTVCwgVkFMKSBcCisgICAgZG8geyBcCisgICAgICAgIERTVCA9IChEU1QgJiB+ KDFVTEwgPDwgKE4pKSkgfCAoKCh1aW50NjRfdCkoVkFMKSkgPDwgKE4pKTsgXAorICAgIH0gd2hp bGUgKDApCisKKyNkZWZpbmUgZkdFVEJJVChOLCBTUkMpICgoKFNSQykgPj4gTikgJiAxKQorI2Rl ZmluZSBmU0VUQklUUyhISSwgTE8sIERTVCwgVkFMKSBcCisgICAgZG8geyBcCisgICAgICAgIGlu dCBqOyBcCisgICAgICAgIGZvciAoaiA9IExPOyBqIDw9IEhJOyBqKyspIHsgXAorICAgICAgICAg ICAgZlNFVEJJVChqLCBEU1QsIFZBTCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkK KyNkZWZpbmUgZkNPVU5UT05FU180KFZBTCkgY3Rwb3AzMihWQUwpCisjZGVmaW5lIGZDT1VOVE9O RVNfOChWQUwpIGN0cG9wNjQoVkFMKQorI2RlZmluZSBmQlJFVl84KFZBTCkgcmV2Yml0NjQoVkFM KQorI2RlZmluZSBmQlJFVl80KFZBTCkgcmV2Yml0MzIoVkFMKQorI2RlZmluZSBmQ0wxXzgoVkFM KSBjbG82NChWQUwpCisjZGVmaW5lIGZDTDFfNChWQUwpIGNsbzMyKFZBTCkKKyNkZWZpbmUgZklO VEVSTEVBVkUoT0RELCBFVkVOKSBpbnRlcmxlYXZlKE9ERCwgRVZFTikKKyNkZWZpbmUgZkRFSU5U RVJMRUFWRShNSVhFRCkgZGVpbnRlcmxlYXZlKE1JWEVEKQorI2RlZmluZSBmSElERShBKSBBCisj ZGVmaW5lIGZDT05TVExMKEEpIEEjI0xMCisjZGVmaW5lIGZFQ0hPKEEpIChBKQorCisjZGVmaW5l IGZUUkFQKFRSQVBUWVBFLCBJTU0pIGhlbHBlcl9yYWlzZV9leGNlcHRpb24oZW52LCBIRVhfRVhD UF9UUkFQMCkKKworI2RlZmluZSBmQUxJR05fUkVHX0ZJRUxEX1ZBTFVFKEZJRUxELCBWQUwpIFwK KyAgICAoKFZBTCkgPDwgcmVnX2ZpZWxkX2luZm9bRklFTERdLm9mZnNldCkKKyNkZWZpbmUgZkdF VF9SRUdfRklFTERfTUFTSyhGSUVMRCkgXAorICAgICgoKDEgPDwgcmVnX2ZpZWxkX2luZm9bRklF TERdLndpZHRoKSAtIDEpIDw8IHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQpCisjZGVmaW5l IGZSRUFEX1JFR19GSUVMRChSRUcsIEZJRUxEKSBcCisgICAgZkVYVFJBQ1RVX0JJVFMoZW52LT5n cHJbSEVYX1JFR18jI1JFR10sIFwKKyAgICAgICAgICAgICAgICAgICByZWdfZmllbGRfaW5mb1tG SUVMRF0ud2lkdGgsIFwKKyAgICAgICAgICAgICAgICAgICByZWdfZmllbGRfaW5mb1tGSUVMRF0u b2Zmc2V0KQorI2RlZmluZSBmR0VUX0ZJRUxEKFZBTCwgRklFTEQpCisjZGVmaW5lIGZTRVRfRklF TEQoVkFMLCBGSUVMRCwgTkVXVkFMKQorI2RlZmluZSBmQkFSUklFUigpCisjZGVmaW5lIGZTWU5D SCgpCisjZGVmaW5lIGZJU1lOQygpCisjZGVmaW5lIGZEQ0ZFVENIKFJFRykgXAorICAgIGRvIHsg KHZvaWQpUkVHOyB9IHdoaWxlICgwKSAvKiBOb3RoaW5nIHRvIGRvIGluIHFlbXUgKi8KKyNkZWZp bmUgZklDSU5WQShSRUcpIFwKKyAgICBkbyB7ICh2b2lkKVJFRzsgfSB3aGlsZSAoMCkgLyogTm90 aGluZyB0byBkbyBpbiBxZW11ICovCisjZGVmaW5lIGZMMkZFVENIKEFERFIsIEhFSUdIVCwgV0lE VEgsIFNUUklERSwgRkxBR1MpCisjZGVmaW5lIGZEQ0NMRUFOQShSRUcpIFwKKyAgICBkbyB7ICh2 b2lkKVJFRzsgfSB3aGlsZSAoMCkgLyogTm90aGluZyB0byBkbyBpbiBxZW11ICovCisjZGVmaW5l IGZEQ0NMRUFOSU5WQShSRUcpIFwKKyAgICBkbyB7ICh2b2lkKVJFRzsgfSB3aGlsZSAoMCkgLyog Tm90aGluZyB0byBkbyBpbiBxZW11ICovCisKKyNkZWZpbmUgZkRDWkVST0EoUkVHKSBkbyB7IGVu di0+ZGN6ZXJvX2FkZHIgPSAoUkVHKTsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBmQlJBTkNIX1NQ RUNVTEFURV9TVEFMTChET1RORVdWQUwsIEpVTVBfQ09ORCwgU1BFQ19ESVIsIEhJTlRCSVROVU0s IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSQklUTlVNKSAvKiBOb3RoaW5n ICovCisKKworI2VuZGlmCi0tIAoyLjcuNAoK