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=-8.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UPPERCASE_50_75,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 07739C3F2D2 for ; Fri, 28 Feb 2020 17:24:22 +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 B378224699 for ; Fri, 28 Feb 2020 17:24:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="GT580zth" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B378224699 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]:51244 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7jN6-0008NY-TA for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:24:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58792) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7imn-0006Tn-8m for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7imk-0008Sj-NJ for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:49 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:13301) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7imk-0005cG-Bj for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908406; x=1614444406; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BAQsPxWZLpEZiwSo6ZLtVBoFljOdlzWuHaezCasuS3k=; b=GT580zthjm4pYY09MXruztKrTZJoTZS4npMYwkOsvgLkIPtwZ26IJ8Fk TDpEYsrzYmHKZ9W//hUkT11qXdqQAmDN+KcOQz3KGj45uPEjxPknogxCQ UqUPsXsF22R4oc3YRjOSPLf5ysjg2i/Lp0iM03w7C554jJymfeleE+D8g M=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-01.qualcomm.com with ESMTP; 28 Feb 2020 08:44:34 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg01-sd.qualcomm.com with ESMTP; 28 Feb 2020 08:44:34 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id DB94AFCD; Fri, 28 Feb 2020 10:44:33 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 63/67] Hexagon HVX macros referenced in instruction semantics Date: Fri, 28 Feb 2020 10:43:59 -0600 Message-Id: <1582908244-304-64-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.38 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL21tdmVjL21hY3Jvcy5oIHwgNDM2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQzNiBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbW12ZWMvbWFjcm9zLmggYi90YXJnZXQvaGV4 YWdvbi9tbXZlYy9tYWNyb3MuaAppbmRleCBiZTgwYmJkLi5jNjNhMDBhIDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9tbXZlYy9tYWNyb3MuaAorKysgYi90YXJnZXQvaGV4YWdvbi9tbXZlYy9t YWNyb3MuaApAQCAtMjU5LDQgKzI1OSw0NDAgQEAgc3RhdGljIGJvb2wgcmVhZG9ubHlfb2soaW5z bl90ICppbnNuKQogI2RlZmluZSBXUklURV9RUkVHX2UoTlVNLCBWQVIsIFZORVcpICAgICBMT0df UVJFR19XUklURShOVU0sIFZBUiwgVk5FVykKICNkZWZpbmUgV1JJVEVfUVJFR194KE5VTSwgVkFS LCBWTkVXKSAgICAgTE9HX1FSRUdfV1JJVEUoTlVNLCBWQVIsIFZORVcpCiAKKyNkZWZpbmUgTE9H X1ZUQ01fQllURShWQSwgTUFTSywgVkFMLCBJRFgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZW52 LT52dGNtX2xvZy5kYXRhLnViW0lEWF0gPSAoVkFMKTsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9n Lm1hc2sudWJbSURYXSA9IChNQVNLKTsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLnZhW0lEWF0g PSAoVkEpOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogVlRDTSBCYW5rcyAqLworI2RlZmluZSBM T0dfVlRDTV9CQU5LKFZBTCwgTUFTSywgSURYKSBcCisgICAgZG8geyBcCisgICAgICAgIGVudi0+ dnRjbV9sb2cub2Zmc2V0cy51aFtJRFhdICA9IChWQUwgJiAweEZGRik7IFwKKyAgICAgICAgZW52 LT52dGNtX2xvZy5vZmZzZXRzLnVoW0lEWF0gfD0gKChNQVNLICYgMHhGKSA8PCAxMikgOyBcCisg ICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVihQUk9D KSB0cnVlCisjZGVmaW5lIGZVU0VfTE9PS1VQX0FERFJFU1MoKSAxCisjZGVmaW5lIGZSVDhOT1RF KCkKKyNkZWZpbmUgZk5PVFEoVkFMKSBcCisgICAgKHsgXAorICAgICAgICBtbXFyZWdfdCBfcmV0 OyAgXAorICAgICAgICBpbnQgX2lfOyAgXAorICAgICAgICBmb3IgKF9pXyA9IDA7IF9pXyA8IGZW RUNTSVpFKCkgLyA2NDsgX2lfKyspIHsgXAorICAgICAgICAgICAgX3JldC51ZFtfaV9dID0gflZB TC51ZFtfaV9dOyBcCisgICAgICAgIH0gXAorICAgICAgICBfcmV0O1wKKyAgICAgfSkKKyNkZWZp bmUgZkdFVFFCSVRTKFJFRywgV0lEVEgsIE1BU0ssIEJJVE5PKSBcCisgICAgKChNQVNLKSAmIChS RUcud1soQklUTk8pID4+IDVdID4+ICgoQklUTk8pICYgMHgxZikpKQorI2RlZmluZSBmR0VUUUJJ VChSRUcsIEJJVE5PKSBmR0VUUUJJVFMoUkVHLCAxLCAxLCBCSVROTykKKyNkZWZpbmUgZkdFTk1B U0tXKFFSRUcsIElEWCkgXAorICAgICgoKGZHRVRRQklUKFFSRUcsIChJRFggKiA0ICsgMCkpID8g MHhGRiA6IDB4MCkgPDwgMCkgIHwgXAorICAgICAoKGZHRVRRQklUKFFSRUcsIChJRFggKiA0ICsg MSkpID8gMHhGRiA6IDB4MCkgPDwgOCkgIHwgXAorICAgICAoKGZHRVRRQklUKFFSRUcsIChJRFgg KiA0ICsgMikpID8gMHhGRiA6IDB4MCkgPDwgMTYpIHwgXAorICAgICAoKGZHRVRRQklUKFFSRUcs IChJRFggKiA0ICsgMykpID8gMHhGRiA6IDB4MCkgPDwgMjQpKQorI2RlZmluZSBmR0VUTklCQkxF KElEWCwgU1JDKSAoZlNYVE4oNCwgOCwgKFNSQyA+PiAoNCAqIElEWCkpICYgMHhGKSkKKyNkZWZp bmUgZkdFVENSVU1CKElEWCwgU1JDKSAoZlNYVE4oMiwgOCwgKFNSQyA+PiAoMiAqIElEWCkpICYg MHgzKSkKKyNkZWZpbmUgZkdFVENSVU1CX1NZTU1FVFJJQyhJRFgsIFNSQykgXAorICAgICgoZkdF VENSVU1CKElEWCwgU1JDKSA+PSAwID8gKDIgLSBmR0VUQ1JVTUIoSURYLCBTUkMpKSBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmR0VUQ1JVTUIoSURYLCBTUkMpKSkKKyNkZWZp bmUgZkdFTk1BU0tIKFFSRUcsIElEWCkgXAorICAgICgoKGZHRVRRQklUKFFSRUcsIChJRFggKiAy ICsgMCkpID8gMHhGRiA6IDB4MCkgPDwgMCkgfCBcCisgICAgICgoZkdFVFFCSVQoUVJFRywgKElE WCAqIDIgKyAxKSkgPyAweEZGIDogMHgwKSA8PCA4KSkKKyNkZWZpbmUgZkdFVE1BU0tXKFZSRUcs IFFSRUcsIElEWCkgKFZSRUcud1tJRFhdICYgZkdFTk1BU0tXKChRUkVHKSwgSURYKSkKKyNkZWZp bmUgZkdFVE1BU0tIKFZSRUcsIFFSRUcsIElEWCkgKFZSRUcuaFtJRFhdICYgZkdFTk1BU0tIKChR UkVHKSwgSURYKSkKKyNkZWZpbmUgZkNPTkRNQVNLOChRUkVHLCBJRFgsIFlFU1ZBTCwgTk9WQUwp IFwKKyAgICAoZkdFVFFCSVQoUVJFRywgSURYKSA/IChZRVNWQUwpIDogKE5PVkFMKSkKKyNkZWZp bmUgZkNPTkRNQVNLMTYoUVJFRywgSURYLCBZRVNWQUwsIE5PVkFMKSBcCisgICAgKChmR0VOTUFT S0goUVJFRywgSURYKSAmIChZRVNWQUwpKSB8IFwKKyAgICAgKGZHRU5NQVNLSChmTk9UUShRUkVH KSwgSURYKSAmIChOT1ZBTCkpKQorI2RlZmluZSBmQ09ORE1BU0szMihRUkVHLCBJRFgsIFlFU1ZB TCwgTk9WQUwpIFwKKyAgICAoKGZHRU5NQVNLVyhRUkVHLCBJRFgpICYgKFlFU1ZBTCkpIHwgXAor ICAgICAoZkdFTk1BU0tXKGZOT1RRKFFSRUcpLCBJRFgpICYgKE5PVkFMKSkpCisjZGVmaW5lIGZT RVRRQklUUyhSRUcsIFdJRFRILCBNQVNLLCBCSVROTywgVkFMKSBcCisgICAgZG8geyBcCisgICAg ICAgIHNpemU0dV90IF9fVE1QID0gKFZBTCk7IFwKKyAgICAgICAgUkVHLndbKEJJVE5PKSA+PiA1 XSAmPSB+KChNQVNLKSA8PCAoKEJJVE5PKSAmIDB4MWYpKTsgXAorICAgICAgICBSRUcud1soQklU Tk8pID4+IDVdIHw9ICgoKF9fVE1QKSAmIChNQVNLKSkgPDwgKChCSVROTykgJiAweDFmKSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU0VUUUJJVChSRUcsIEJJVE5PLCBWQUwpIGZTRVRR QklUUyhSRUcsIDEsIDEsIEJJVE5PLCBWQUwpCisjZGVmaW5lIGZWQllURVMoKSAoZlZFQ1NJWkUo KSkKKyNkZWZpbmUgZlZBTElHTihBRERSLCBMT0cyX0FMSUdOTUVOVCkgKEFERFIgPSBBRERSICYg fihMT0cyX0FMSUdOTUVOVCAtIDEpKQorI2RlZmluZSBmVkxBU1RCWVRFKEFERFIsIExPRzJfQUxJ R05NRU5UKSAoQUREUiA9IEFERFIgfCAoTE9HMl9BTElHTk1FTlQgLSAxKSkKKyNkZWZpbmUgZlZF TEVNKFdJRFRIKSAoKGZWRUNTSVpFKCkgKiA4KSAvIFdJRFRIKQorI2RlZmluZSBmVkVDTE9HU0la RSgpICg3KQorI2RlZmluZSBmVkVDU0laRSgpICgxIDw8IGZWRUNMT0dTSVpFKCkpCisjZGVmaW5l IGZTV0FQQihBLCBCKSBkbyB7IHNpemUxdV90IHRtcCA9IEE7IEEgPSBCOyBCID0gdG1wOyB9IHdo aWxlICgwKQorc3RhdGljIGlubGluZSBtbXZlY3Rvcl90IG1tdmVjX3plcm9fdmVjdG9yKHZvaWQp Cit7CisgICAgbW12ZWN0b3JfdCByZXQ7CisgICAgbWVtc2V0KCZyZXQsIDAsIHNpemVvZihyZXQp KTsKKyAgICByZXR1cm4gcmV0OworfQorI2RlZmluZSBmVlpFUk8oKSBtbXZlY196ZXJvX3ZlY3Rv cigpCisjZGVmaW5lIGZORVdWUkVHKFZOVU0pIFwKKyAgICAoKGVudi0+VlJlZ3NfdXBkYXRlZCAm ICgoKFZSZWdNYXNrKTEpIDw8IFZOVU0pKSA/IGVudi0+ZnV0dXJlX1ZSZWdzW1ZOVU1dIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1tdmVj X3plcm9fdmVjdG9yKCkpCisjZGVmaW5lIGZWX0FMX0NIRUNLKEVBLCBNQVNLKSBcCisgICAgaWYg KChFQSkgJiAoTUFTSykpIHsgXAorICAgICAgICB3YXJuKCJhbGlnbmluZyBtaXNhbGlnbmVkIHZl Y3Rvci4gRUE9JTA4eCIsIChFQSkpOyBcCisgICAgfQorI2RlZmluZSBmU0NBVFRFUl9JTklUKFJF R0lPTl9TVEFSVCwgTEVOR1RILCBFTEVNRU5UX1NJWkUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAg bWVtX3ZlY3Rvcl9zY2F0dGVyX2luaXQoZW52LCBzbG90LCBSRUdJT05fU1RBUlQsIExFTkdUSCwg RUxFTUVOVF9TSVpFKTtcCisgICAgICAgIGlmIChFWENFUFRJT05fREVURUNURUQpIHsgXAorICAg ICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5l IGZHQVRIRVJfSU5JVChSRUdJT05fU1RBUlQsIExFTkdUSCwgRUxFTUVOVF9TSVpFKSBcCisgICAg ZG8geyBcCisgICAgICAgIG1lbV92ZWN0b3JfZ2F0aGVyX2luaXQoZW52LCBzbG90LCBSRUdJT05f U1RBUlQsIExFTkdUSCwgRUxFTUVOVF9TSVpFKTsgXAorICAgICAgICBpZiAoRVhDRVBUSU9OX0RF VEVDVEVEKSB7IFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICB9IFwKKyAgICB9IHdo aWxlICgwKQorI2RlZmluZSBmU0NBVFRFUl9GSU5JU0goT1ApIFwKKyAgICBkbyB7IFwKKyAgICAg ICAgaWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgeyBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAg ICAgICAgfSBcCisgICAgICAgIG1lbV92ZWN0b3Jfc2NhdHRlcl9maW5pc2goZW52LCBzbG90LCBP UCk7IFwKKyAgICB9IHdoaWxlICgwKTsKKyNkZWZpbmUgZkdBVEhFUl9GSU5JU0goKSBcCisgICAg ZG8geyBcCisgICAgICAgIGlmIChFWENFUFRJT05fREVURUNURUQpIHsgXAorICAgICAgICAgICAg cmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAgICBtZW1fdmVjdG9yX2dhdGhlcl9maW5pc2go ZW52LCBzbG90KTsgXAorICAgIH0gd2hpbGUgKDApOworI2RlZmluZSBmTE9HX1NDQVRURVJfT1Ao U0laRSkgXAorICAgIGRvIHsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLm9wID0gMTsgXAorICAg ICAgICBlbnYtPnZ0Y21fbG9nLm9wX3NpemUgPSBTSVpFOyBcCisgICAgfSB3aGlsZSAoMCkKKyNk ZWZpbmUgZlZMT0dfVlRDTV9XT1JEX0lOQ1JFTUVOVChFQSwgT0ZGU0VULCBJTkMsIElEWCwgQUxJ R05NRU5ULCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50IGxvZ19ieXRlID0gMDsgXAor ICAgICAgICB2YWRkcl90IHZhID0gRUE7IFwKKyAgICAgICAgdmFkZHJfdCB2YV9oaWdoID0gRUEg KyBMRU47IFwKKyAgICAgICAgZm9yIChpbnQgaTAgPSAwOyBpMCA8IDQ7IGkwKyspIHsgXAorICAg ICAgICAgICAgbG9nX2J5dGUgPSAodmEgKyBpMCkgPD0gdmFfaGlnaDsgXAorICAgICAgICAgICAg TE9HX1ZUQ01fQllURSh2YSArIGkwLCBsb2dfYnl0ZSwgSU5DLiB1Yls0ICogSURYICsgaTBdLCBc CisgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBc CisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRF9JTkNSRU1FTlQo RUEsIE9GRlNFVCwgSU5DLCBJRFgsIEFMSUdOTUVOVCwgTEVOKSBcCisgICAgZG8geyBcCisgICAg ICAgIGludCBsb2dfYnl0ZSA9IDA7IFwKKyAgICAgICAgdmFkZHJfdCB2YSA9IEVBOyBcCisgICAg ICAgIHZhZGRyX3QgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGZvciAoaW50IGkwID0g MDsgaTAgPCAyOyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxvZ19ieXRlID0gKHZhICsgaTApIDw9 IHZhX2hpZ2g7IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUs IElOQy51YlsyICogSURYICsgaTBdLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBJ RFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBmVkxP R19WVENNX0hBTEZXT1JEX0lOQ1JFTUVOVF9EVihFQSwgT0ZGU0VULCBJTkMsIElEWCwgSURYMiwg SURYX0gsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUxJR05N RU5ULCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50IGxvZ19ieXRlID0gMDsgXAorICAg ICAgICB2YWRkcl90IHZhID0gRUE7IFwKKyAgICAgICAgdmFkZHJfdCB2YV9oaWdoID0gRUEgKyBM RU47IFwKKyAgICAgICAgZm9yIChpbnQgaTAgPSAwOyBpMCA8IDI7IGkwKyspIHsgXAorICAgICAg ICAgICAgbG9nX2J5dGUgPSAodmEgKyBpMCkgPD0gdmFfaGlnaDsgXAorICAgICAgICAgICAgTE9H X1ZUQ01fQllURSh2YSArIGkwLCBsb2dfYnl0ZSwgSU5DLnViWzIgKiBJRFggKyBpMF0sIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgMiAqIElEWCArIGkwKTsgXAorICAgICAgICB9IFwKKyAg ICB9IHdoaWxlICgwKQorCisvKiBOT1RFIC0gV2lsbCB0aGlzIGFsd2F5cyBiZSB0bXBfVlJlZ3Nb MF07ICovCisjZGVmaW5lIEdBVEhFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgRUxF TUVOVF9TSVpFLCBCQU5LX0lEWCwgUVZBTCkgXAorICAgIGRvIHsgXAorICAgICAgICBpbnQgaTA7 IFwKKyAgICAgICAgdmFkZHJfdCB2YSA9IEVBOyBcCisgICAgICAgIHZhZGRyX3QgdmFfaGlnaCA9 IEVBICsgTEVOOyBcCisgICAgICAgIGludCBsb2dfYmFuayA9IDA7IFwKKyAgICAgICAgaW50IGxv Z19ieXRlID0gMDsgXAorICAgICAgICBmb3IgKGkwID0gMDsgaTAgPCBFTEVNRU5UX1NJWkU7IGkw KyspIHsgXAorICAgICAgICAgICAgbG9nX2J5dGUgPSAoKHZhICsgaTApIDw9IHZhX2hpZ2gpICYm IFFWQUw7IFwKKyAgICAgICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZSA8PCBpMCk7IFwKKyAg ICAgICAgICAgIHNpemUxdV90IEI7IFwKKyAgICAgICAgICAgIGdldF91c2VyX3U4KEIsIEVBICsg aTApOyBcCisgICAgICAgICAgICBlbnYtPnRtcF9WUmVnc1swXS51YltFTEVNRU5UX1NJWkUgKiBJ RFggKyBpMF0gPSBCOyBcCisgICAgICAgICAgICBMT0dfVlRDTV9CWVRFKHZhICsgaTAsIGxvZ19i eXRlLCBCLCBFTEVNRU5UX1NJWkUgKiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisgICAgICAg IExPR19WVENNX0JBTksodmEsIGxvZ19iYW5rLCBCQU5LX0lEWCk7IFwKKyAgICB9IHdoaWxlICgw KQorI2RlZmluZSBmVkxPR19WVENNX0dBVEhFUl9XT1JEKEVBLCBPRkZTRVQsIElEWCwgTEVOKSBc CisgICAgZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExF TiwgNCwgSURYLCAxKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FU SEVSX0hBTEZXT1JEKEVBLCBPRkZTRVQsIElEWCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAg IEdBVEhFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgSURYLCAxKTsgXAorICAg IH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEX0RWKEVBLCBP RkZTRVQsIElEWCwgSURYMiwgSURYX0gsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBHQVRI RVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsICgyICogSURYMiArIElEWF9IKSwg MSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0dBVEhFUl9XT1JEUShF QSwgT0ZGU0VULCBJRFgsIFEsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVO Q1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDQsIElEWCwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgZkdFVFFCSVQoUXNWLCA0ICogSURYICsgaTApKTsgXAorICAgIH0gd2hpbGUgKDApCisj ZGVmaW5lIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUShFQSwgT0ZGU0VULCBJRFgsIFEsIExF TikgXAorICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURY LCBMRU4sIDIsIElEWCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCAy ICogSURYICsgaTApKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fR0FU SEVSX0hBTEZXT1JEUV9EVihFQSwgT0ZGU0VULCBJRFgsIElEWDIsIElEWF9ILCBRLCBMRU4pIFwK KyAgICBkbyB7IFwKKyAgICAgICAgR0FUSEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVO LCAyLCAoMiAqIElEWDIgKyBJRFhfSCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRR QklUKFFzViwgMiAqIElEWCArIGkwKSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBTQ0FU VEVSX09QX1dSSVRFX1RPX01FTShUWVBFKSBcCisgICAgZG8geyBcCisgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgZW52LT52dGNtX2xvZy5zaXplOyBpICs9IHNpemVvZihUWVBFKSkgeyBcCisg ICAgICAgICAgICBpZiAoZW52LT52dGNtX2xvZy5tYXNrLnViW2ldICE9IDApIHsgXAorICAgICAg ICAgICAgICAgIFRZUEUgZHN0ID0gMDsgXAorICAgICAgICAgICAgICAgIFRZUEUgaW5jID0gMDsg XAorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2l6ZW9mKFRZUEUpOyBqKysp IHsgXAorICAgICAgICAgICAgICAgICAgICBzaXplMXVfdCB2YWw7IFwKKyAgICAgICAgICAgICAg ICAgICAgZ2V0X3VzZXJfdTgodmFsLCBlbnYtPnZ0Y21fbG9nLnZhW2kgKyBqXSk7IFwKKyAgICAg ICAgICAgICAgICAgICAgZHN0IHw9IHZhbCA8PCAoOCAqIGopOyBcCisgICAgICAgICAgICAgICAg ICAgIGluYyB8PSBlbnYtPnZ0Y21fbG9nLmRhdGEudWJbaiArIGldIDw8ICg4ICogaik7IFwKKyAg ICAgICAgICAgICAgICAgICAgZW52LT52dGNtX2xvZy5tYXNrLnViW2ogKyBpXSA9IDA7IFwKKyAg ICAgICAgICAgICAgICAgICAgZW52LT52dGNtX2xvZy5kYXRhLnViW2ogKyBpXSA9IDA7IFwKKyAg ICAgICAgICAgICAgICAgICAgZW52LT52dGNtX2xvZy5vZmZzZXRzLnViW2ogKyBpXSA9IDA7IFwK KyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBkc3QgKz0gaW5jOyBcCisgICAg ICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzaXplb2YoVFlQRSk7IGorKykgeyBcCisg ICAgICAgICAgICAgICAgICAgIHB1dF91c2VyX3U4KChkc3QgPj4gKDggKiBqKSkgJiAweEZGLCBc CisgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnZ0Y21fbG9nLnZhW2kgKyBqXSk7ICBcCisg ICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3 aGlsZSAoMCkKKyNkZWZpbmUgU0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwg RUxFTV9TSVpFLCBCQU5LX0lEWCwgUVZBTCwgSU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaW50 IGkwOyBcCisgICAgICAgIHRhcmdldF91bG9uZyB2YSA9IEVBOyBcCisgICAgICAgIHRhcmdldF91 bG9uZyB2YV9oaWdoID0gRUEgKyBMRU47IFwKKyAgICAgICAgaW50IGxvZ19iYW5rID0gMDsgXAor ICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOyBcCisgICAgICAgIGZvciAoaTAgPSAwOyBpMCA8IEVM RU1fU0laRTsgaTArKykgeyBcCisgICAgICAgICAgICBsb2dfYnl0ZSA9ICgodmEgKyBpMCkgPD0g dmFfaGlnaCkgJiYgUVZBTDsgXAorICAgICAgICAgICAgbG9nX2JhbmsgfD0gKGxvZ19ieXRlIDw8 IGkwKTsgXAorICAgICAgICAgICAgTE9HX1ZUQ01fQllURSh2YSArIGkwLCBsb2dfYnl0ZSwgSU4u dWJbRUxFTV9TSVpFICogSURYICsgaTBdLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEVM RU1fU0laRSAqIElEWCArIGkwKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgTE9HX1ZUQ01fQkFO Syh2YSwgbG9nX2JhbmssIEJBTktfSURYKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZW TE9HX1ZUQ01fSEFMRldPUkQoRUEsIE9GRlNFVCwgSU4sIElEWCwgTEVOKSBcCisgICAgZG8geyBc CisgICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsIElEWCwg MSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9XT1JEKEVBLCBP RkZTRVQsIElOLCBJRFgsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNU SU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCA0LCBJRFgsIDEsIElOKTsgXAorICAgIH0gd2hpbGUg KDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fSEFMRldPUkRRKEVBLCBPRkZTRVQsIElOLCBJRFgsIFEs IExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQs IElEWCwgTEVOLCAyLCBJRFgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmR0VUUUJJVChR c1YsIDIgKiBJRFggKyBpMCksIElOKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9H X1ZUQ01fV09SRFEoRUEsIE9GRlNFVCwgSU4sIElEWCwgUSwgTEVOKSBcCisgICAgZG8geyBcCisg ICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDQsIElEWCwgXAor ICAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFzViwgNCAqIElEWCArIGkwKSwgSU4p OyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRF9EVihFQSwg T0ZGU0VULCBJTiwgSURYLCBJRFgyLCBJRFhfSCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAg IFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoMiAqIElEWDIgKyBJRFhfSCksIDEsIElOKTsgXAorICAgIH0gd2hpbGUg KDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fSEFMRldPUkRRX0RWKEVBLCBPRkZTRVQsIElOLCBJRFgs IFEsIElEWDIsIElEWF9ILCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgU0NBVFRFUl9GVU5D VElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgKDIgKiBJRFgyICsgSURYX0gpLCBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgZkdFVFFCSVQoUXNWLCAyICogSURYICsgaTApLCBJTik7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU1RPUkVSRUxFQVNFKEVBLCBUWVBFKSBcCisgICAg ZG8geyBcCisgICAgICAgIGZWX0FMX0NIRUNLKEVBLCBmVkVDU0laRSgpIC0gMSk7IFwKKyAgICB9 IHdoaWxlICgwKQorI2RlZmluZSBmTE9BRE1NVl9BTChFQSwgQUxJR05NRU5ULCBMRU4sIERTVCkg XAorICAgIGRvIHsgXAorICAgICAgICBmVl9BTF9DSEVDSyhFQSwgQUxJR05NRU5UIC0gMSk7IFwK KyAgICAgICAgbWVtX2xvYWRfdmVjdG9yX29kZHZhKGVudiwgRUEgJiB+KEFMSUdOTUVOVCAtIDEp LCBFQSwgc2xvdCwgTEVOLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRFNULnVi WzBdLCBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0gd2hpbGUgKDApCisj ZGVmaW5lIGZMT0FETU1WKEVBLCBEU1QpIGZMT0FETU1WX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVD U0laRSgpLCBEU1QpCisjZGVmaW5lIGZMT0FETU1WVV9BTChFQSwgQUxJR05NRU5ULCBMRU4sIERT VCkgXAorICAgIGRvIHsgXAorICAgICAgICBzaXplNHVfdCBzaXplMiA9IChFQSkgJiAoQUxJR05N RU5UIC0gMSk7IFwKKyAgICAgICAgc2l6ZTR1X3Qgc2l6ZTEgPSBMRU4gLSBzaXplMjsgXAorICAg ICAgICBtZW1fbG9hZF92ZWN0b3Jfb2RkdmEoZW52LCBFQSArIHNpemUxLCBFQSArIGZWRUNTSVpF KCksIDEsIHNpemUyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRFNULnViW3Np emUxXSwgZlVTRV9MT09LVVBfQUREUkVTUygpKTsgXAorICAgICAgICBtZW1fbG9hZF92ZWN0b3Jf b2RkdmEoZW52LCBFQSwgRUEsIDAsIHNpemUxLCAmRFNULnViWzBdLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0g d2hpbGUgKDApCisjZGVmaW5lIGZMT0FETU1WVShFQSwgRFNUKSBcCisgICAgZG8geyBcCisgICAg ICAgIGlmICgoRUEgJiAoZlZFQ1NJWkUoKSAtIDEpKSA9PSAwKSB7IFwKKyAgICAgICAgICAgIGZM T0FETU1WX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgpLCBEU1QpOyBcCisgICAgICAgIH0g ZWxzZSB7IFwKKyAgICAgICAgICAgIGZMT0FETU1WVV9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJ WkUoKSwgRFNUKTsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU1RP UkVNTVZfQUwoRUEsIEFMSUdOTUVOVCwgTEVOLCBTUkMpIFwKKyAgICBkbyAgeyBcCisgICAgICAg IGZWX0FMX0NIRUNLKEVBLCBBTElHTk1FTlQgLSAxKTsgXAorICAgICAgICBtZW1fc3RvcmVfdmVj dG9yX29kZHZhKGVudiwgRUEgJiB+KEFMSUdOTUVOVCAtIDEpLCBFQSwgc2xvdCwgTEVOLCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNSQy51YlswXSwgMCwgMCwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZVU0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKCkpOyBc CisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WKEVBLCBTUkMpIGZTVE9SRU1NVl9B TChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwgU1JDKQorI2RlZmluZSBmU1RPUkVNTVZRX0FM KEVBLCBBTElHTk1FTlQsIExFTiwgU1JDLCBNQVNLKSBcCisgICAgZG8geyBcCisgICAgICAgIG1t dmVjdG9yX3QgbWFza3ZlYzsgXAorICAgICAgICBpbnQgaTsgXAorICAgICAgICBmb3IgKGkgPSAw OyBpIDwgZlZFQ1NJWkUoKTsgaSsrKSB7IFwKKyAgICAgICAgICAgIG1hc2t2ZWMudWJbaV0gPSBm R0VUUUJJVChNQVNLLCBpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgbWVtX3N0b3JlX3ZlY3Rv cl9vZGR2YShlbnYsIEVBICYgfihBTElHTk1FTlQgLSAxKSwgRUEsIHNsb3QsIExFTiwgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTUkMudWJbMF0sICZtYXNrdmVjLnViWzBdLCAw LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlVTRV9MT09LVVBfQUREUkVTU19C WV9SRVYoKSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmU1RPUkVNTVZRKEVBLCBTUkMs IE1BU0spIFwKKyAgICBmU1RPUkVNTVZRX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgpLCBT UkMsIE1BU0spCisjZGVmaW5lIGZTVE9SRU1NVk5RX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JD LCBNQVNLKSBcCisgICAgZG8geyBcCisgICAgICAgIG1tdmVjdG9yX3QgbWFza3ZlYzsgXAorICAg ICAgICBpbnQgaTsgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZlZFQ1NJWkUoKTsgaSsrKSB7 IFwKKyAgICAgICAgICAgIG1hc2t2ZWMudWJbaV0gPSBmR0VUUUJJVChNQVNLLCBpKTsgXAorICAg ICAgICB9IFwKKyAgICAgICAgZlZfQUxfQ0hFQ0soRUEsIEFMSUdOTUVOVCAtIDEpOyBcCisgICAg ICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEoZW52LCBFQSAmIH4oQUxJR05NRU5UIC0gMSksIEVB LCBzbG90LCBMRU4sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1JDLnViWzBd LCAmbWFza3ZlYy51YlswXSwgMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZV U0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUg ZlNUT1JFTU1WTlEoRUEsIFNSQywgTUFTSykgXAorICAgIGZTVE9SRU1NVk5RX0FMKEVBLCBmVkVD U0laRSgpLCBmVkVDU0laRSgpLCBTUkMsIE1BU0spCisjZGVmaW5lIGZTVE9SRU1NVlVfQUwoRUEs IEFMSUdOTUVOVCwgTEVOLCBTUkMpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc2l6ZTR1X3Qgc2l6 ZTEgPSBBTElHTk1FTlQgLSAoKEVBKSAmIChBTElHTk1FTlQgLSAxKSk7IFwKKyAgICAgICAgc2l6 ZTR1X3Qgc2l6ZTI7IFwKKyAgICAgICAgaWYgKHNpemUxID4gTEVOKSB7IFwKKyAgICAgICAgICAg IHNpemUxID0gTEVOOyBcCisgICAgICAgIH0gXAorICAgICAgICBzaXplMiA9IExFTiAtIHNpemUx OyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEoZW52LCBFQSArIHNpemUxLCBFQSAr IGZWRUNTSVpFKCksIDEsIHNpemUyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JlNSQy51YltzaXplMV0sIDAsIDAsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm VVNFX0xPT0tVUF9BRERSRVNTKCkpOyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEo ZW52LCBFQSwgRUEsIDAsIHNpemUxLCAmU1JDLnViWzBdLCAwLCAwLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYoKSk7IFwKKyAgICB9 IHdoaWxlICgwKQorI2RlZmluZSBmU1RPUkVNTVZVKEVBLCBTUkMpIFwKKyAgICBkbyB7IFwKKyAg ICAgICAgaWYgKChFQSAmIChmVkVDU0laRSgpIC0gMSkpID09IDApIHsgXAorICAgICAgICAgICAg ZlNUT1JFTU1WX0FMKEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgpLCBTUkMpOyBcCisgICAgICAg IH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGZTVE9SRU1NVlVfQUwoRUEsIGZWRUNTSVpFKCksIGZW RUNTSVpFKCksIFNSQyk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUg ZlNUT1JFTU1WUVVfQUwoRUEsIEFMSUdOTUVOVCwgTEVOLCBTUkMsIE1BU0spIFwKKyAgICBkbyB7 IFwKKyAgICAgICAgc2l6ZTR1X3Qgc2l6ZTEgPSBBTElHTk1FTlQgLSAoKEVBKSAmIChBTElHTk1F TlQgLSAxKSk7IFwKKyAgICAgICAgc2l6ZTR1X3Qgc2l6ZTI7IFwKKyAgICAgICAgbW12ZWN0b3Jf dCBtYXNrdmVjOyBcCisgICAgICAgIGludCBpOyBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBm VkVDU0laRSgpOyBpKyspIHsgXAorICAgICAgICAgICAgbWFza3ZlYy51YltpXSA9IGZHRVRRQklU KE1BU0ssIGkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBpZiAoc2l6ZTEgPiBMRU4pIHsgXAor ICAgICAgICAgICAgc2l6ZTEgPSBMRU47IFwKKyAgICAgICAgfSBcCisgICAgICAgIHNpemUyID0g TEVOIC0gc2l6ZTE7IFwKKyAgICAgICAgbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YShlbnYsIEVBICsg c2l6ZTEsIEVBICsgZlZFQ1NJWkUoKSwgMSwgc2l6ZTIsIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmU1JDLnViW3NpemUxXSwgJm1hc2t2ZWMudWJbc2l6ZTFdLCAwLCBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZlVTRV9MT09LVVBfQUREUkVTUygpKTsgXAorICAg ICAgICBtZW1fc3RvcmVfdmVjdG9yX29kZHZhKGVudiwgRUEsIDAsIHNpemUxLCAmU1JDLnViWzBd LCAmbWFza3ZlYy51YlswXSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZV U0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUg ZlNUT1JFTU1WTlFVX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JDLCBNQVNLKSBcCisgICAgZG8g eyBcCisgICAgICAgIHNpemU0dV90IHNpemUxID0gQUxJR05NRU5UIC0gKChFQSkgJiAoQUxJR05N RU5UIC0gMSkpOyBcCisgICAgICAgIHNpemU0dV90IHNpemUyOyBcCisgICAgICAgIG1tdmVjdG9y X3QgbWFza3ZlYzsgXAorICAgICAgICBpbnQgaTsgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwg ZlZFQ1NJWkUoKTsgaSsrKSB7IFwKKyAgICAgICAgICAgIG1hc2t2ZWMudWJbaV0gPSBmR0VUUUJJ VChNQVNLLCBpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgaWYgKHNpemUxID4gTEVOKSB7IFwK KyAgICAgICAgICAgIHNpemUxID0gTEVOOyBcCisgICAgICAgIH0gXAorICAgICAgICBzaXplMiA9 IExFTiAtIHNpemUxOyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEoZW52LCBFQSAr IHNpemUxLCBFQSArIGZWRUNTSVpFKCksIDEsIHNpemUyLCBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJlNSQy51YltzaXplMV0sICZtYXNrdmVjLnViW3NpemUxXSwgMSwgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZVU0VfTE9PS1VQX0FERFJFU1MoKSk7IFwKKyAg ICAgICAgbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YShlbnYsIEVBLCBFQSwgMCwgc2l6ZTEsICZTUkMu dWJbMF0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFza3ZlYy51YlswXSwg MSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZVU0VfTE9PS1VQX0FERFJFU1Nf QllfUkVWKCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZGT1JFQUNIKFdJRFRILCBW QVIpIGZvciAoVkFSID0gMDsgVkFSIDwgZlZFTEVNKFdJRFRIKTsgVkFSKyspCisjZGVmaW5lIGZW QVJSQVlfRUxFTUVOVF9BQ0NFU1MoQVJSQVksIFRZUEUsIElOREVYKSBcCisgICAgQVJSQVkudlso SU5ERVgpIC8gKGZWRUNTSVpFKCkgLyAoc2l6ZW9mKEFSUkFZLlRZUEVbMF0pKSldLlRZUEVbKElO REVYKSAlIFwKKyAgICAoZlZFQ1NJWkUoKSAvIChzaXplb2YoQVJSQVkuVFlQRVswXSkpKV0KKy8q IEdyYWJzIHRoZSAudG1wIGRhdGEsIHdoZXJldmVyIGl0IGlzLCBhbmQgY2xlYXJzIHRoZSAudG1w IHN0YXR1cyAqLworLyogVXNlZCBmb3Igdmhpc3QgKi8KK3N0YXRpYyBpbmxpbmUgbW12ZWN0b3Jf dCBtbXZlY192dG1wX2RhdGEodm9pZCkKK3sKKyAgICBtbXZlY3Rvcl90IHJldDsKKyAgICBnX2Fz c2VydF9ub3RfcmVhY2hlZCgpOworICAgIHJldHVybiByZXQ7Cit9CisjZGVmaW5lIGZUTVBWREFU QSgpIG1tdmVjX3Z0bXBfZGF0YSgpCisjZGVmaW5lIGZWU0FURFcoVSwgVikgZlZTQVRXKCgoKChs b25nIGxvbmcpVSkgPDwgMzIpIHwgZlpYVE4oMzIsIDY0LCBWKSkpCisjZGVmaW5lIGZWQVNMX1NB VEhJKFUsIFYpIGZWU0FUVygoKFUpIDw8IDEpIHwgKChWKSA+PiAzMSkpCisjZGVmaW5lIGZWVUFE RFNBVChXSURUSCwgVSwgVikgXAorICAgIGZWU0FUVU4oV0lEVEgsIGZaWFROKFdJRFRILCAyICog V0lEVEgsIFUpICsgZlpYVE4oV0lEVEgsIDIgKiBXSURUSCwgVikpCisjZGVmaW5lIGZWU0FERFNB VChXSURUSCwgVSwgVikgXAorICAgIGZWU0FUTihXSURUSCwgZlNYVE4oV0lEVEgsIDIgKiBXSURU SCwgVSkgKyBmU1hUTihXSURUSCwgMiAqIFdJRFRILCBWKSkKKyNkZWZpbmUgZlZVU1VCU0FUKFdJ RFRILCBVLCBWKSBcCisgICAgZlZTQVRVTihXSURUSCwgZlpYVE4oV0lEVEgsIDIgKiBXSURUSCwg VSkgLSBmWlhUTihXSURUSCwgMiAqIFdJRFRILCBWKSkKKyNkZWZpbmUgZlZTU1VCU0FUKFdJRFRI LCBVLCBWKSBcCisgICAgZlZTQVROKFdJRFRILCBmU1hUTihXSURUSCwgMiAqIFdJRFRILCBVKSAt IGZTWFROKFdJRFRILCAyICogV0lEVEgsIFYpKQorI2RlZmluZSBmVkFWR1UoV0lEVEgsIFUsIFYp IFwKKyAgICAoKGZaWFROKFdJRFRILCAyICogV0lEVEgsIFUpICsgZlpYVE4oV0lEVEgsIDIgKiBX SURUSCwgVikpID4+IDEpCisjZGVmaW5lIGZWQVZHVVJORChXSURUSCwgVSwgVikgXAorICAgICgo ZlpYVE4oV0lEVEgsIDIgKiBXSURUSCwgVSkgKyBmWlhUTihXSURUSCwgMiAqIFdJRFRILCBWKSAr IDEpID4+IDEpCisjZGVmaW5lIGZWTkFWR1UoV0lEVEgsIFUsIFYpIFwKKyAgICAoKGZaWFROKFdJ RFRILCAyICogV0lEVEgsIFUpIC0gZlpYVE4oV0lEVEgsIDIgKiBXSURUSCwgVikpID4+IDEpCisj ZGVmaW5lIGZWTkFWR1VSTkRTQVQoV0lEVEgsIFUsIFYpIFwKKyAgICBmVlNBVFVOKFdJRFRILCAo KGZaWFROKFdJRFRILCAyICogV0lEVEgsIFUpIC0gXAorICAgICAgICAgICAgICAgICAgICAgZlpY VE4oV0lEVEgsIDIgKiBXSURUSCwgVikgKyAxKSA+PiAxKSkKKyNkZWZpbmUgZlZBVkdTKFdJRFRI LCBVLCBWKSBcCisgICAgKChmU1hUTihXSURUSCwgMiAqIFdJRFRILCBVKSArIGZTWFROKFdJRFRI LCAyICogV0lEVEgsIFYpKSA+PiAxKQorI2RlZmluZSBmVkFWR1NSTkQoV0lEVEgsIFUsIFYpIFwK KyAgICAoKGZTWFROKFdJRFRILCAyICogV0lEVEgsIFUpICsgZlNYVE4oV0lEVEgsIDIgKiBXSURU SCwgVikgKyAxKSA+PiAxKQorI2RlZmluZSBmVk5BVkdTKFdJRFRILCBVLCBWKSBcCisgICAgKChm U1hUTihXSURUSCwgMiAqIFdJRFRILCBVKSAtIGZTWFROKFdJRFRILCAyICogV0lEVEgsIFYpKSA+ PiAxKQorI2RlZmluZSBmVk5BVkdTUk5EKFdJRFRILCBVLCBWKSBcCisgICAgKChmU1hUTihXSURU SCwgMiAqIFdJRFRILCBVKSAtIGZTWFROKFdJRFRILCAyICogV0lEVEgsIFYpICsgMSkgPj4gMSkK KyNkZWZpbmUgZlZOQVZHU1JORFNBVChXSURUSCwgVSwgVikgXAorICAgIGZWU0FUTihXSURUSCwg KChmU1hUTihXSURUSCwgMiAqIFdJRFRILCBVKSAtIFwKKyAgICAgICAgICAgICAgICAgICAgZlNY VE4oV0lEVEgsIDIgKiBXSURUSCwgVikgKyAxKSA+PiAxKSkKKyNkZWZpbmUgZlZOT1JPVU5EKFZB TCwgU0hBTVQpIFZBTAorI2RlZmluZSBmVk5PU0FUKFZBTCkgVkFMCisjZGVmaW5lIGZWUk9VTkQo VkFMLCBTSEFNVCkgXAorICAgICgoVkFMKSArICgoKFNIQU1UKSA+IDApID8gKDFMTCA8PCAoKFNI QU1UKSAtIDEpKSA6IDApKQorI2RlZmluZSBmQ0FSUllfRlJPTV9BREQzMihBLCBCLCBDKSBcCisg ICAgKCgoZlpYVE4oMzIsIDY0LCBBKSArIGZaWFROKDMyLCA2NCwgQikgKyBDKSA+PiAzMikgJiAx KQorI2RlZmluZSBmVUFSQ0hfTk9URV9QVU1QXzRYKCkKKyNkZWZpbmUgZlVBUkNIX05PVEVfUFVN UF8yWCgpCisKICNlbmRpZgotLSAKMi43LjQKCg==