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 93DF8C352A4 for ; Tue, 11 Feb 2020 01:19:10 +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 50B6920708 for ; Tue, 11 Feb 2020 01:19:10 +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="tnb3Xx1y" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 50B6920708 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]:42074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1KCj-000131-Fc for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:19:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34625) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1Jd1-0002r8-DW for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1Jcy-0003ob-89 for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:15 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:3639) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1Jcx-0004qc-Qb for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381731; x=1612917731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DetMGUvSjsjvLuZtSYhw6FATblr95T5B1PFnal5cCtI=; b=tnb3Xx1yor18KfUTEtFykZV3WSPNOD3aktEHAWC3kUXhFqN5azHAvppt yIg+1MPpgFVLdl2yzIc89IqIxfCdBmyVe++ftGquRC5rx0grq21Q0x62d RKSuSEQWD20zhOzB1dN/v8wKGmsHKVKS6px51cwpEwdAHJUZguXX/kStV g=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 10 Feb 2020 16:41:04 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 10 Feb 2020 16:41:03 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 980721B5B; Mon, 10 Feb 2020 18:41:03 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 62/66] Hexagon HVX macros referenced in instruction semantics Date: Mon, 10 Feb 2020 18:40:40 -0600 Message-Id: <1581381644-13678-63-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> References: <1581381644-13678-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 YWdvbi9tbXZlYy9tYWNyb3MuaAppbmRleCA4MGFkYjgzLi45M2Q4NmU3IDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9tbXZlYy9tYWNyb3MuaAorKysgYi90YXJnZXQvaGV4YWdvbi9tbXZlYy9t YWNyb3MuaApAQCAtMjI5LDQgKzIyOSw0NDAgQEAKICNkZWZpbmUgV1JJVEVfUVJFR19lKE5VTSwg VkFSLCBWTkVXKSAgICAgTE9HX1FSRUdfV1JJVEUoTlVNLCBWQVIsIFZORVcpCiAjZGVmaW5lIFdS SVRFX1FSRUdfeChOVU0sIFZBUiwgVk5FVykgICAgIExPR19RUkVHX1dSSVRFKE5VTSwgVkFSLCBW TkVXKQogCisjZGVmaW5lIExPR19WVENNX0JZVEUoVkEsIE1BU0ssIFZBTCwgSURYKSBcCisgICAg ZG8geyBcCisgICAgICAgIGVudi0+dnRjbV9sb2cuZGF0YS51YltJRFhdID0gKFZBTCk7IFwKKyAg ICAgICAgZW52LT52dGNtX2xvZy5tYXNrLnViW0lEWF0gPSAoTUFTSyk7IFwKKyAgICAgICAgZW52 LT52dGNtX2xvZy52YVtJRFhdID0gKFZBKTsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFZUQ00g QmFua3MgKi8KKyNkZWZpbmUgTE9HX1ZUQ01fQkFOSyhWQUwsIE1BU0ssIElEWCkgXAorICAgIGRv IHsgXAorICAgICAgICBlbnYtPnZ0Y21fbG9nLm9mZnNldHMudWhbSURYXSAgPSAoVkFMICYgMHhG RkYpOyBcCisgICAgICAgIGVudi0+dnRjbV9sb2cub2Zmc2V0cy51aFtJRFhdIHw9ICgoTUFTSyAm IDB4RikgPDwgMTIpIDsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgZlVTRV9MT09LVVBf QUREUkVTU19CWV9SRVYoUFJPQykgdHJ1ZQorI2RlZmluZSBmVVNFX0xPT0tVUF9BRERSRVNTKCkg MQorI2RlZmluZSBmUlQ4Tk9URSgpCisjZGVmaW5lIGZOT1RRKFZBTCkgXAorICAgICh7IFwKKyAg ICAgICAgbW1xcmVnX3QgX3JldDsgIFwKKyAgICAgICAgaW50IF9pXzsgIFwKKyAgICAgICAgZm9y IChfaV8gPSAwOyBfaV8gPCBmVkVDU0laRSgpIC8gNjQ7IF9pXysrKSB7IFwKKyAgICAgICAgICAg IF9yZXQudWRbX2lfXSA9IH5WQUwudWRbX2lfXTsgXAorICAgICAgICB9IFwKKyAgICAgICAgX3Jl dDtcCisgICAgIH0pCisjZGVmaW5lIGZHRVRRQklUUyhSRUcsIFdJRFRILCBNQVNLLCBCSVROTykg XAorICAgICgoTUFTSykgJiAoUkVHLndbKEJJVE5PKSA+PiA1XSA+PiAoKEJJVE5PKSAmIDB4MWYp KSkKKyNkZWZpbmUgZkdFVFFCSVQoUkVHLCBCSVROTykgZkdFVFFCSVRTKFJFRywgMSwgMSwgQklU Tk8pCisjZGVmaW5lIGZHRU5NQVNLVyhRUkVHLCBJRFgpIFwKKyAgICAoKChmR0VUUUJJVChRUkVH LCAoSURYICogNCArIDApKSA/IDB4RkYgOiAweDApIDw8IDApICB8IFwKKyAgICAgKChmR0VUUUJJ VChRUkVHLCAoSURYICogNCArIDEpKSA/IDB4RkYgOiAweDApIDw8IDgpICB8IFwKKyAgICAgKChm R0VUUUJJVChRUkVHLCAoSURYICogNCArIDIpKSA/IDB4RkYgOiAweDApIDw8IDE2KSB8IFwKKyAg ICAgKChmR0VUUUJJVChRUkVHLCAoSURYICogNCArIDMpKSA/IDB4RkYgOiAweDApIDw8IDI0KSkK KyNkZWZpbmUgZkdFVE5JQkJMRShJRFgsIFNSQykgKGZTWFROKDQsIDgsIChTUkMgPj4gKDQgKiBJ RFgpKSAmIDB4RikpCisjZGVmaW5lIGZHRVRDUlVNQihJRFgsIFNSQykgKGZTWFROKDIsIDgsIChT UkMgPj4gKDIgKiBJRFgpKSAmIDB4MykpCisjZGVmaW5lIGZHRVRDUlVNQl9TWU1NRVRSSUMoSURY LCBTUkMpIFwKKyAgICAoKGZHRVRDUlVNQihJRFgsIFNSQykgPj0gMCA/ICgyIC0gZkdFVENSVU1C KElEWCwgU1JDKSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZkdFVENSVU1C KElEWCwgU1JDKSkpCisjZGVmaW5lIGZHRU5NQVNLSChRUkVHLCBJRFgpIFwKKyAgICAoKChmR0VU UUJJVChRUkVHLCAoSURYICogMiArIDApKSA/IDB4RkYgOiAweDApIDw8IDApIHwgXAorICAgICAo KGZHRVRRQklUKFFSRUcsIChJRFggKiAyICsgMSkpID8gMHhGRiA6IDB4MCkgPDwgOCkpCisjZGVm aW5lIGZHRVRNQVNLVyhWUkVHLCBRUkVHLCBJRFgpIChWUkVHLndbSURYXSAmIGZHRU5NQVNLVygo UVJFRyksIElEWCkpCisjZGVmaW5lIGZHRVRNQVNLSChWUkVHLCBRUkVHLCBJRFgpIChWUkVHLmhb SURYXSAmIGZHRU5NQVNLSCgoUVJFRyksIElEWCkpCisjZGVmaW5lIGZDT05ETUFTSzgoUVJFRywg SURYLCBZRVNWQUwsIE5PVkFMKSBcCisgICAgKGZHRVRRQklUKFFSRUcsIElEWCkgPyAoWUVTVkFM KSA6IChOT1ZBTCkpCisjZGVmaW5lIGZDT05ETUFTSzE2KFFSRUcsIElEWCwgWUVTVkFMLCBOT1ZB TCkgXAorICAgICgoZkdFTk1BU0tIKFFSRUcsIElEWCkgJiAoWUVTVkFMKSkgfCBcCisgICAgIChm R0VOTUFTS0goZk5PVFEoUVJFRyksIElEWCkgJiAoTk9WQUwpKSkKKyNkZWZpbmUgZkNPTkRNQVNL MzIoUVJFRywgSURYLCBZRVNWQUwsIE5PVkFMKSBcCisgICAgKChmR0VOTUFTS1coUVJFRywgSURY KSAmIChZRVNWQUwpKSB8IFwKKyAgICAgKGZHRU5NQVNLVyhmTk9UUShRUkVHKSwgSURYKSAmIChO T1ZBTCkpKQorI2RlZmluZSBmU0VUUUJJVFMoUkVHLCBXSURUSCwgTUFTSywgQklUTk8sIFZBTCkg XAorICAgIGRvIHsgXAorICAgICAgICBzaXplNHVfdCBfX1RNUCA9IChWQUwpOyBcCisgICAgICAg IFJFRy53WyhCSVROTykgPj4gNV0gJj0gfigoTUFTSykgPDwgKChCSVROTykgJiAweDFmKSk7IFwK KyAgICAgICAgUkVHLndbKEJJVE5PKSA+PiA1XSB8PSAoKChfX1RNUCkgJiAoTUFTSykpIDw8ICgo QklUTk8pICYgMHgxZikpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNFVFFCSVQoUkVH LCBCSVROTywgVkFMKSBmU0VUUUJJVFMoUkVHLCAxLCAxLCBCSVROTywgVkFMKQorI2RlZmluZSBm VkJZVEVTKCkgKGZWRUNTSVpFKCkpCisjZGVmaW5lIGZWQUxJR04oQUREUiwgTE9HMl9BTElHTk1F TlQpIChBRERSID0gQUREUiAmIH4oTE9HMl9BTElHTk1FTlQgLSAxKSkKKyNkZWZpbmUgZlZMQVNU QllURShBRERSLCBMT0cyX0FMSUdOTUVOVCkgKEFERFIgPSBBRERSIHwgKExPRzJfQUxJR05NRU5U IC0gMSkpCisjZGVmaW5lIGZWRUxFTShXSURUSCkgKChmVkVDU0laRSgpICogOCkgLyBXSURUSCkK KyNkZWZpbmUgZlZFQ0xPR1NJWkUoKSAoNykKKyNkZWZpbmUgZlZFQ1NJWkUoKSAoMSA8PCBmVkVD TE9HU0laRSgpKQorI2RlZmluZSBmU1dBUEIoQSwgQikgZG8geyBzaXplMXVfdCB0bXAgPSBBOyBB ID0gQjsgQiA9IHRtcDsgfSB3aGlsZSAoMCkKK3N0YXRpYyBpbmxpbmUgbW12ZWN0b3JfdCBtbXZl Y196ZXJvX3ZlY3Rvcih2b2lkKQoreworICAgIG1tdmVjdG9yX3QgcmV0OworICAgIG1lbXNldCgm cmV0LCAwLCBzaXplb2YocmV0KSk7CisgICAgcmV0dXJuIHJldDsKK30KKyNkZWZpbmUgZlZaRVJP KCkgbW12ZWNfemVyb192ZWN0b3IoKQorI2RlZmluZSBmTkVXVlJFRyhWTlVNKSBcCisgICAgKChl bnYtPlZSZWdzX3VwZGF0ZWQgJiAoKChWUmVnTWFzaykxKSA8PCBWTlVNKSkgPyBlbnYtPmZ1dHVy ZV9WUmVnc1tWTlVNXSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBtbXZlY196ZXJvX3ZlY3RvcigpKQorI2RlZmluZSBmVl9BTF9DSEVDSyhF QSwgTUFTSykgXAorICAgIGlmICgoRUEpICYgKE1BU0spKSB7IFwKKyAgICAgICAgd2FybigiYWxp Z25pbmcgbWlzYWxpZ25lZCB2ZWN0b3IuIEVBPSUwOHgiLCAoRUEpKTsgXAorICAgIH0KKyNkZWZp bmUgZlNDQVRURVJfSU5JVChSRUdJT05fU1RBUlQsIExFTkdUSCwgRUxFTUVOVF9TSVpFKSBcCisg ICAgZG8geyBcCisgICAgICAgIG1lbV92ZWN0b3Jfc2NhdHRlcl9pbml0KGVudiwgc2xvdCwgUkVH SU9OX1NUQVJULCBMRU5HVEgsIEVMRU1FTlRfU0laRSk7XAorICAgICAgICBpZiAoRVhDRVBUSU9O X0RFVEVDVEVEKSB7IFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICB9IFwKKyAgICB9 IHdoaWxlICgwKQorI2RlZmluZSBmR0FUSEVSX0lOSVQoUkVHSU9OX1NUQVJULCBMRU5HVEgsIEVM RU1FTlRfU0laRSkgXAorICAgIGRvIHsgXAorICAgICAgICBtZW1fdmVjdG9yX2dhdGhlcl9pbml0 KGVudiwgc2xvdCwgUkVHSU9OX1NUQVJULCBMRU5HVEgsIEVMRU1FTlRfU0laRSk7IFwKKyAgICAg ICAgaWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgeyBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAg ICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNDQVRURVJfRklOSVNIKE9QKSBc CisgICAgZG8geyBcCisgICAgICAgIGlmIChFWENFUFRJT05fREVURUNURUQpIHsgXAorICAgICAg ICAgICAgcmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAgICBtZW1fdmVjdG9yX3NjYXR0ZXJf ZmluaXNoKGVudiwgc2xvdCwgT1ApOyBcCisgICAgfSB3aGlsZSAoMCk7CisjZGVmaW5lIGZHQVRI RVJfRklOSVNIKCkgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoRVhDRVBUSU9OX0RFVEVDVEVE KSB7IFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICB9IFwKKyAgICAgICAgbWVtX3Zl Y3Rvcl9nYXRoZXJfZmluaXNoKGVudiwgc2xvdCk7IFwKKyAgICB9IHdoaWxlICgwKTsKKyNkZWZp bmUgZkxPR19TQ0FUVEVSX09QKFNJWkUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZW52LT52dGNt X2xvZy5vcCA9IDE7IFwKKyAgICAgICAgZW52LT52dGNtX2xvZy5vcF9zaXplID0gU0laRTsgXAor ICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01fV09SRF9JTkNSRU1FTlQoRUEsIE9G RlNFVCwgSU5DLCBJRFgsIEFMSUdOTUVOVCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIGlu dCBsb2dfYnl0ZSA9IDA7IFwKKyAgICAgICAgdmFkZHJfdCB2YSA9IEVBOyBcCisgICAgICAgIHZh ZGRyX3QgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGZvciAoaW50IGkwID0gMDsgaTAg PCA0OyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxvZ19ieXRlID0gKHZhICsgaTApIDw9IHZhX2hp Z2g7IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIElOQy4g dWJbNCAqIElEWCArIGkwXSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICA0ICogSURYICsg aTApOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZUQ01f SEFMRldPUkRfSU5DUkVNRU5UKEVBLCBPRkZTRVQsIElOQywgSURYLCBBTElHTk1FTlQsIExFTikg XAorICAgIGRvIHsgXAorICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOyBcCisgICAgICAgIHZhZGRy X3QgdmEgPSBFQTsgXAorICAgICAgICB2YWRkcl90IHZhX2hpZ2ggPSBFQSArIExFTjsgXAorICAg ICAgICBmb3IgKGludCBpMCA9IDA7IGkwIDwgMjsgaTArKykgeyBcCisgICAgICAgICAgICBsb2df Ynl0ZSA9ICh2YSArIGkwKSA8PSB2YV9oaWdoOyBcCisgICAgICAgICAgICBMT0dfVlRDTV9CWVRF KHZhICsgaTAsIGxvZ19ieXRlLCBJTkMudWJbMiAqIElEWCArIGkwXSwgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAyICogSURYICsgaTApOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUg KDApCisKKyNkZWZpbmUgZlZMT0dfVlRDTV9IQUxGV09SRF9JTkNSRU1FTlRfRFYoRUEsIE9GRlNF VCwgSU5DLCBJRFgsIElEWDIsIElEWF9ILCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFMSUdOTUVOVCwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIGludCBs b2dfYnl0ZSA9IDA7IFwKKyAgICAgICAgdmFkZHJfdCB2YSA9IEVBOyBcCisgICAgICAgIHZhZGRy X3QgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGZvciAoaW50IGkwID0gMDsgaTAgPCAy OyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxvZ19ieXRlID0gKHZhICsgaTApIDw9IHZhX2hpZ2g7 IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEgKyBpMCwgbG9nX2J5dGUsIElOQy51Ylsy ICogSURYICsgaTBdLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBJRFggKyBpMCk7 IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogTk9URSAtIFdpbGwgdGhpcyBh bHdheXMgYmUgdG1wX1ZSZWdzWzBdOyAqLworI2RlZmluZSBHQVRIRVJfRlVOQ1RJT04oRUEsIE9G RlNFVCwgSURYLCBMRU4sIEVMRU1FTlRfU0laRSwgQkFOS19JRFgsIFFWQUwpIFwKKyAgICBkbyB7 IFwKKyAgICAgICAgaW50IGkwOyBcCisgICAgICAgIHZhZGRyX3QgdmEgPSBFQTsgXAorICAgICAg ICB2YWRkcl90IHZhX2hpZ2ggPSBFQSArIExFTjsgXAorICAgICAgICBpbnQgbG9nX2JhbmsgPSAw OyBcCisgICAgICAgIGludCBsb2dfYnl0ZSA9IDA7IFwKKyAgICAgICAgZm9yIChpMCA9IDA7IGkw IDwgRUxFTUVOVF9TSVpFOyBpMCsrKSB7IFwKKyAgICAgICAgICAgIGxvZ19ieXRlID0gKCh2YSAr IGkwKSA8PSB2YV9oaWdoKSAmJiBRVkFMOyBcCisgICAgICAgICAgICBsb2dfYmFuayB8PSAobG9n X2J5dGUgPDwgaTApOyBcCisgICAgICAgICAgICBzaXplMXVfdCBCOyBcCisgICAgICAgICAgICBn ZXRfdXNlcl91OChCLCBFQSArIGkwKTsgXAorICAgICAgICAgICAgZW52LT50bXBfVlJlZ3NbMF0u dWJbRUxFTUVOVF9TSVpFICogSURYICsgaTBdID0gQjsgXAorICAgICAgICAgICAgTE9HX1ZUQ01f QllURSh2YSArIGkwLCBsb2dfYnl0ZSwgQiwgRUxFTUVOVF9TSVpFICogSURYICsgaTApOyBcCisg ICAgICAgIH0gXAorICAgICAgICBMT0dfVlRDTV9CQU5LKHZhLCBsb2dfYmFuaywgQkFOS19JRFgp OyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0dfVlRDTV9HQVRIRVJfV09SRChFQSwg T0ZGU0VULCBJRFgsIExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04o RUEsIE9GRlNFVCwgSURYLCBMRU4sIDQsIElEWCwgMSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2Rl ZmluZSBmVkxPR19WVENNX0dBVEhFUl9IQUxGV09SRChFQSwgT0ZGU0VULCBJRFgsIExFTikgXAor ICAgIGRvIHsgXAorICAgICAgICBHQVRIRVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4s IDIsIElEWCwgMSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0dBVEhF Ul9IQUxGV09SRF9EVihFQSwgT0ZGU0VULCBJRFgsIElEWDIsIElEWF9ILCBMRU4pIFwKKyAgICBk byB7IFwKKyAgICAgICAgR0FUSEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCAyLCAo MiAqIElEWDIgKyBJRFhfSCksIDEpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlZMT0df VlRDTV9HQVRIRVJfV09SRFEoRUEsIE9GRlNFVCwgSURYLCBRLCBMRU4pIFwKKyAgICBkbyB7IFwK KyAgICAgICAgR0FUSEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCA0LCBJRFgsIFwK KyAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFzViwgNCAqIElEWCArIGkwKSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0dBVEhFUl9IQUxGV09SRFEoRUEs IE9GRlNFVCwgSURYLCBRLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgR0FUSEVSX0ZVTkNU SU9OKEVBLCBPRkZTRVQsIElEWCwgTEVOLCAyLCBJRFgsIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGZHRVRRQklUKFFzViwgMiAqIElEWCArIGkwKSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2Rl ZmluZSBmVkxPR19WVENNX0dBVEhFUl9IQUxGV09SRFFfRFYoRUEsIE9GRlNFVCwgSURYLCBJRFgy LCBJRFhfSCwgUSwgTEVOKSBcCisgICAgZG8geyBcCisgICAgICAgIEdBVEhFUl9GVU5DVElPTihF QSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgKDIgKiBJRFgyICsgSURYX0gpLCBcCisgICAgICAgICAg ICAgICAgICAgICAgICBmR0VUUUJJVChRc1YsIDIgKiBJRFggKyBpMCkpOyBcCisgICAgfSB3aGls ZSAoMCkKKyNkZWZpbmUgU0NBVFRFUl9PUF9XUklURV9UT19NRU0oVFlQRSkgXAorICAgIGRvIHsg XAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVudi0+dnRjbV9sb2cuc2l6ZTsgaSArPSBz aXplb2YoVFlQRSkpIHsgXAorICAgICAgICAgICAgaWYgKGVudi0+dnRjbV9sb2cubWFzay51Yltp XSAhPSAwKSB7IFwKKyAgICAgICAgICAgICAgICBUWVBFIGRzdCA9IDA7IFwKKyAgICAgICAgICAg ICAgICBUWVBFIGluYyA9IDA7IFwKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8 IHNpemVvZihUWVBFKTsgaisrKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZTF1X3QgdmFs OyBcCisgICAgICAgICAgICAgICAgICAgIGdldF91c2VyX3U4KHZhbCwgZW52LT52dGNtX2xvZy52 YVtpICsgal0pOyBcCisgICAgICAgICAgICAgICAgICAgIGRzdCB8PSB2YWwgPDwgKDggKiBqKTsg XAorICAgICAgICAgICAgICAgICAgICBpbmMgfD0gZW52LT52dGNtX2xvZy5kYXRhLnViW2ogKyBp XSA8PCAoOCAqIGopOyBcCisgICAgICAgICAgICAgICAgICAgIGVudi0+dnRjbV9sb2cubWFzay51 YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAgICAgICAgIGVudi0+dnRjbV9sb2cuZGF0YS51 YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAgICAgICAgIGVudi0+dnRjbV9sb2cub2Zmc2V0 cy51YltqICsgaV0gPSAwOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAg ZHN0ICs9IGluYzsgXAorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2l6ZW9m KFRZUEUpOyBqKyspIHsgXAorICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcl91OCgoZHN0ID4+ ICg4ICogaikpICYgMHhGRiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZW52LT52dGNtX2xv Zy52YVtpICsgal0pOyAgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisg ICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIFNDQVRURVJfRlVOQ1RJT04oRUEs IE9GRlNFVCwgSURYLCBMRU4sIEVMRU1fU0laRSwgQkFOS19JRFgsIFFWQUwsIElOKSBcCisgICAg ZG8geyBcCisgICAgICAgIGludCBpMDsgXAorICAgICAgICB0YXJnZXRfdWxvbmcgdmEgPSBFQTsg XAorICAgICAgICB0YXJnZXRfdWxvbmcgdmFfaGlnaCA9IEVBICsgTEVOOyBcCisgICAgICAgIGlu dCBsb2dfYmFuayA9IDA7IFwKKyAgICAgICAgaW50IGxvZ19ieXRlID0gMDsgXAorICAgICAgICBm b3IgKGkwID0gMDsgaTAgPCBFTEVNX1NJWkU7IGkwKyspIHsgXAorICAgICAgICAgICAgbG9nX2J5 dGUgPSAoKHZhICsgaTApIDw9IHZhX2hpZ2gpICYmIFFWQUw7IFwKKyAgICAgICAgICAgIGxvZ19i YW5rIHw9IChsb2dfYnl0ZSA8PCBpMCk7IFwKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUodmEg KyBpMCwgbG9nX2J5dGUsIElOLnViW0VMRU1fU0laRSAqIElEWCArIGkwXSwgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICBFTEVNX1NJWkUgKiBJRFggKyBpMCk7IFwKKyAgICAgICAgfSBcCisg ICAgICAgIExPR19WVENNX0JBTksodmEsIGxvZ19iYW5rLCBCQU5LX0lEWCk7IFwKKyAgICB9IHdo aWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEKEVBLCBPRkZTRVQsIElOLCBJRFgs IExFTikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQs IElEWCwgTEVOLCAyLCBJRFgsIDEsIElOKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZW TE9HX1ZUQ01fV09SRChFQSwgT0ZGU0VULCBJTiwgSURYLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAg ICAgICAgU0NBVFRFUl9GVU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgNCwgSURYLCAxLCBJ Tik7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEUShFQSwg T0ZGU0VULCBJTiwgSURYLCBRLCBMRU4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgU0NBVFRFUl9G VU5DVElPTihFQSwgT0ZGU0VULCBJRFgsIExFTiwgMiwgSURYLCBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgZkdFVFFCSVQoUXNWLCAyICogSURYICsgaTApLCBJTik7IFwKKyAgICB9IHdoaWxl ICgwKQorI2RlZmluZSBmVkxPR19WVENNX1dPUkRRKEVBLCBPRkZTRVQsIElOLCBJRFgsIFEsIExF TikgXAorICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElE WCwgTEVOLCA0LCBJRFgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmR0VUUUJJVChRc1Ys IDQgKiBJRFggKyBpMCksIElOKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZWTE9HX1ZU Q01fSEFMRldPUkRfRFYoRUEsIE9GRlNFVCwgSU4sIElEWCwgSURYMiwgSURYX0gsIExFTikgXAor ICAgIGRvIHsgXAorICAgICAgICBTQ0FUVEVSX0ZVTkNUSU9OKEVBLCBPRkZTRVQsIElEWCwgTEVO LCAyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKDIgKiBJRFgyICsgSURYX0gpLCAxLCBJ Tik7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmVkxPR19WVENNX0hBTEZXT1JEUV9EVihF QSwgT0ZGU0VULCBJTiwgSURYLCBRLCBJRFgyLCBJRFhfSCwgTEVOKSBcCisgICAgZG8geyBcCisg ICAgICAgIFNDQVRURVJfRlVOQ1RJT04oRUEsIE9GRlNFVCwgSURYLCBMRU4sIDIsICgyICogSURY MiArIElEWF9IKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZHRVRRQklUKFFzViwgMiAq IElEWCArIGkwKSwgSU4pOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFUkVMRUFT RShFQSwgVFlQRSkgXAorICAgIGRvIHsgXAorICAgICAgICBmVl9BTF9DSEVDSyhFQSwgZlZFQ1NJ WkUoKSAtIDEpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZkxPQURNTVZfQUwoRUEsIEFM SUdOTUVOVCwgTEVOLCBEU1QpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgZlZfQUxfQ0hFQ0soRUEs IEFMSUdOTUVOVCAtIDEpOyBcCisgICAgICAgIG1lbV9sb2FkX3ZlY3Rvcl9vZGR2YShlbnYsIEVB ICYgfihBTElHTk1FTlQgLSAxKSwgRUEsIHNsb3QsIExFTiwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJkRTVC51YlswXSwgZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYoKSk7IFwK KyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmTE9BRE1NVihFQSwgRFNUKSBmTE9BRE1NVl9BTChF QSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwgRFNUKQorI2RlZmluZSBmTE9BRE1NVlVfQUwoRUEs IEFMSUdOTUVOVCwgTEVOLCBEU1QpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc2l6ZTR1X3Qgc2l6 ZTIgPSAoRUEpICYgKEFMSUdOTUVOVCAtIDEpOyBcCisgICAgICAgIHNpemU0dV90IHNpemUxID0g TEVOIC0gc2l6ZTI7IFwKKyAgICAgICAgbWVtX2xvYWRfdmVjdG9yX29kZHZhKGVudiwgRUEgKyBz aXplMSwgRUEgKyBmVkVDU0laRSgpLCAxLCBzaXplMiwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJkRTVC51YltzaXplMV0sIGZVU0VfTE9PS1VQX0FERFJFU1MoKSk7IFwKKyAgICAg ICAgbWVtX2xvYWRfdmVjdG9yX29kZHZhKGVudiwgRUEsIEVBLCAwLCBzaXplMSwgJkRTVC51Ylsw XSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlVTRV9MT09LVVBfQUREUkVTU19C WV9SRVYoKSk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBmTE9BRE1NVlUoRUEsIERTVCkg XAorICAgIGRvIHsgXAorICAgICAgICBpZiAoKEVBICYgKGZWRUNTSVpFKCkgLSAxKSkgPT0gMCkg eyBcCisgICAgICAgICAgICBmTE9BRE1NVl9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwg RFNUKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICBmTE9BRE1NVlVfQUwoRUEs IGZWRUNTSVpFKCksIGZWRUNTSVpFKCksIERTVCk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGls ZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JDKSBcCisg ICAgZG8gIHsgXAorICAgICAgICBmVl9BTF9DSEVDSyhFQSwgQUxJR05NRU5UIC0gMSk7IFwKKyAg ICAgICAgbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YShlbnYsIEVBICYgfihBTElHTk1FTlQgLSAxKSwg RUEsIHNsb3QsIExFTiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTUkMudWJb MF0sIDAsIDAsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVVNFX0xPT0tVUF9B RERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVihF QSwgU1JDKSBmU1RPUkVNTVZfQUwoRUEsIGZWRUNTSVpFKCksIGZWRUNTSVpFKCksIFNSQykKKyNk ZWZpbmUgZlNUT1JFTU1WUV9BTChFQSwgQUxJR05NRU5ULCBMRU4sIFNSQywgTUFTSykgXAorICAg IGRvIHsgXAorICAgICAgICBtbXZlY3Rvcl90IG1hc2t2ZWM7IFwKKyAgICAgICAgaW50IGk7IFwK KyAgICAgICAgZm9yIChpID0gMDsgaSA8IGZWRUNTSVpFKCk7IGkrKykgeyBcCisgICAgICAgICAg ICBtYXNrdmVjLnViW2ldID0gZkdFVFFCSVQoTUFTSywgaSk7IFwKKyAgICAgICAgfSBcCisgICAg ICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEoZW52LCBFQSAmIH4oQUxJR05NRU5UIC0gMSksIEVB LCBzbG90LCBMRU4sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1JDLnViWzBd LCAmbWFza3ZlYy51YlswXSwgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZV U0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUg ZlNUT1JFTU1WUShFQSwgU1JDLCBNQVNLKSBcCisgICAgZlNUT1JFTU1WUV9BTChFQSwgZlZFQ1NJ WkUoKSwgZlZFQ1NJWkUoKSwgU1JDLCBNQVNLKQorI2RlZmluZSBmU1RPUkVNTVZOUV9BTChFQSwg QUxJR05NRU5ULCBMRU4sIFNSQywgTUFTSykgXAorICAgIGRvIHsgXAorICAgICAgICBtbXZlY3Rv cl90IG1hc2t2ZWM7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAgICAgZm9yIChpID0gMDsgaSA8 IGZWRUNTSVpFKCk7IGkrKykgeyBcCisgICAgICAgICAgICBtYXNrdmVjLnViW2ldID0gZkdFVFFC SVQoTUFTSywgaSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGZWX0FMX0NIRUNLKEVBLCBBTElH Tk1FTlQgLSAxKTsgXAorICAgICAgICBtZW1fc3RvcmVfdmVjdG9yX29kZHZhKGVudiwgRUEgJiB+ KEFMSUdOTUVOVCAtIDEpLCBFQSwgc2xvdCwgTEVOLCBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJlNSQy51YlswXSwgJm1hc2t2ZWMudWJbMF0sIDEsIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0g d2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVk5RKEVBLCBTUkMsIE1BU0spIFwKKyAgICBmU1RP UkVNTVZOUV9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUoKSwgU1JDLCBNQVNLKQorI2RlZmlu ZSBmU1RPUkVNTVZVX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JDKSBcCisgICAgZG8geyBcCisg ICAgICAgIHNpemU0dV90IHNpemUxID0gQUxJR05NRU5UIC0gKChFQSkgJiAoQUxJR05NRU5UIC0g MSkpOyBcCisgICAgICAgIHNpemU0dV90IHNpemUyOyBcCisgICAgICAgIGlmIChzaXplMSA+IExF TikgeyBcCisgICAgICAgICAgICBzaXplMSA9IExFTjsgXAorICAgICAgICB9IFwKKyAgICAgICAg c2l6ZTIgPSBMRU4gLSBzaXplMTsgXAorICAgICAgICBtZW1fc3RvcmVfdmVjdG9yX29kZHZhKGVu diwgRUEgKyBzaXplMSwgRUEgKyBmVkVDU0laRSgpLCAxLCBzaXplMiwgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZTUkMudWJbc2l6ZTFdLCAwLCAwLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZlVTRV9MT09LVVBfQUREUkVTUygpKTsgXAorICAgICAgICBtZW1f c3RvcmVfdmVjdG9yX29kZHZhKGVudiwgRUEsIEVBLCAwLCBzaXplMSwgJlNSQy51YlswXSwgMCwg MCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZVU0VfTE9PS1VQX0FERFJFU1Nf QllfUkVWKCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZlNUT1JFTU1WVShFQSwgU1JD KSBcCisgICAgZG8geyBcCisgICAgICAgIGlmICgoRUEgJiAoZlZFQ1NJWkUoKSAtIDEpKSA9PSAw KSB7IFwKKyAgICAgICAgICAgIGZTVE9SRU1NVl9BTChFQSwgZlZFQ1NJWkUoKSwgZlZFQ1NJWkUo KSwgU1JDKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICBmU1RPUkVNTVZVX0FM KEVBLCBmVkVDU0laRSgpLCBmVkVDU0laRSgpLCBTUkMpOyBcCisgICAgICAgIH0gXAorICAgIH0g d2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVlFVX0FMKEVBLCBBTElHTk1FTlQsIExFTiwgU1JD LCBNQVNLKSBcCisgICAgZG8geyBcCisgICAgICAgIHNpemU0dV90IHNpemUxID0gQUxJR05NRU5U IC0gKChFQSkgJiAoQUxJR05NRU5UIC0gMSkpOyBcCisgICAgICAgIHNpemU0dV90IHNpemUyOyBc CisgICAgICAgIG1tdmVjdG9yX3QgbWFza3ZlYzsgXAorICAgICAgICBpbnQgaTsgXAorICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgZlZFQ1NJWkUoKTsgaSsrKSB7IFwKKyAgICAgICAgICAgIG1hc2t2 ZWMudWJbaV0gPSBmR0VUUUJJVChNQVNLLCBpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgaWYg KHNpemUxID4gTEVOKSB7IFwKKyAgICAgICAgICAgIHNpemUxID0gTEVOOyBcCisgICAgICAgIH0g XAorICAgICAgICBzaXplMiA9IExFTiAtIHNpemUxOyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0 b3Jfb2RkdmEoZW52LCBFQSArIHNpemUxLCBFQSArIGZWRUNTSVpFKCksIDEsIHNpemUyLCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNSQy51YltzaXplMV0sICZtYXNrdmVjLnVi W3NpemUxXSwgMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZVU0VfTE9PS1VQ X0FERFJFU1MoKSk7IFwKKyAgICAgICAgbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YShlbnYsIEVBLCAw LCBzaXplMSwgJlNSQy51YlswXSwgJm1hc2t2ZWMudWJbMF0sIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwLCBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0g d2hpbGUgKDApCisjZGVmaW5lIGZTVE9SRU1NVk5RVV9BTChFQSwgQUxJR05NRU5ULCBMRU4sIFNS QywgTUFTSykgXAorICAgIGRvIHsgXAorICAgICAgICBzaXplNHVfdCBzaXplMSA9IEFMSUdOTUVO VCAtICgoRUEpICYgKEFMSUdOTUVOVCAtIDEpKTsgXAorICAgICAgICBzaXplNHVfdCBzaXplMjsg XAorICAgICAgICBtbXZlY3Rvcl90IG1hc2t2ZWM7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAg ICAgZm9yIChpID0gMDsgaSA8IGZWRUNTSVpFKCk7IGkrKykgeyBcCisgICAgICAgICAgICBtYXNr dmVjLnViW2ldID0gZkdFVFFCSVQoTUFTSywgaSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGlm IChzaXplMSA+IExFTikgeyBcCisgICAgICAgICAgICBzaXplMSA9IExFTjsgXAorICAgICAgICB9 IFwKKyAgICAgICAgc2l6ZTIgPSBMRU4gLSBzaXplMTsgXAorICAgICAgICBtZW1fc3RvcmVfdmVj dG9yX29kZHZhKGVudiwgRUEgKyBzaXplMSwgRUEgKyBmVkVDU0laRSgpLCAxLCBzaXplMiwgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTUkMudWJbc2l6ZTFdLCAmbWFza3ZlYy51 YltzaXplMV0sIDEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVVNFX0xPT0tV UF9BRERSRVNTKCkpOyBcCisgICAgICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEoZW52LCBFQSwg RUEsIDAsIHNpemUxLCAmU1JDLnViWzBdLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJm1hc2t2ZWMudWJbMF0sIDEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm VVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVigpKTsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5l IGZWRk9SRUFDSChXSURUSCwgVkFSKSBmb3IgKFZBUiA9IDA7IFZBUiA8IGZWRUxFTShXSURUSCk7 IFZBUisrKQorI2RlZmluZSBmVkFSUkFZX0VMRU1FTlRfQUNDRVNTKEFSUkFZLCBUWVBFLCBJTkRF WCkgXAorICAgIEFSUkFZLnZbKElOREVYKSAvIChmVkVDU0laRSgpIC8gKHNpemVvZihBUlJBWS5U WVBFWzBdKSkpXS5UWVBFWyhJTkRFWCkgJSBcCisgICAgKGZWRUNTSVpFKCkgLyAoc2l6ZW9mKEFS UkFZLlRZUEVbMF0pKSldCisvKiBHcmFicyB0aGUgLnRtcCBkYXRhLCB3aGVyZXZlciBpdCBpcywg YW5kIGNsZWFycyB0aGUgLnRtcCBzdGF0dXMgKi8KKy8qIFVzZWQgZm9yIHZoaXN0ICovCitzdGF0 aWMgaW5saW5lIG1tdmVjdG9yX3QgbW12ZWNfdnRtcF9kYXRhKHZvaWQpCit7CisgICAgbW12ZWN0 b3JfdCByZXQ7CisgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICByZXR1cm4gcmV0Owor fQorI2RlZmluZSBmVE1QVkRBVEEoKSBtbXZlY192dG1wX2RhdGEoKQorI2RlZmluZSBmVlNBVERX 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 aW5lIGZVQVJDSF9OT1RFX1BVTVBfMlgoKQorCiAjZW5kaWYKLS0gCjIuNy40Cgo=